文档章节

Golang学习笔记(1)

ExtreU
 ExtreU
发布于 11/14 22:35
字数 1048
阅读 9
收藏 0
Go

基本知识

golang的文件格式以go结尾。
运行方式 go run main.go 用于开发调试使用
编译成二进制文件 go build main.go 会生成一个可执行的二进制文件

变量

变量定义的形式

Golang的变量定义有多种,首先,我们看下最繁琐的定义:var X [类型] = XX
实例:

package main
import "fmt"
func main() {
    var a int = 1
    fmt.Println(a)
}

这里的变量类型我们可以把它省略,因为编译器会自动去判断变量的类型。格式变成var X = XX
实例:

package main 
import "fmt"
func main() {
    var a = 1
    fmt.Println(a)
}

还有一种变量的表示形式,这种方式最简洁X := XX
实例:

package main
import "fmt"
func main() {
    a := 1
    fmt.Println(a)
}

如果一个变量很重要使用第一种方式定义,比如全局变量。如果一个变量不那么重要就可以使用第三种方法定义,比如:

 for i := 0; i<10; i++ {
     doSomething()
 }

注意: var 关键字无法直接写进循环体中的初始化语句中,而且必须提前声明变量:

var i = 0;
for ; i<10; i++ {
    doSomething()
}

局部变量和全局变量

局部变量: 定义在函数内部,函数调用结束它就消亡。
全局变量: 首字母大写,就是公开的全局变量;如果是小写的首字母,就是内部变量。内部全局变量只能当前包内访问,外部代码是看不见的。

变量与常量

Gonlang中用const关键字定义常量。常量是全局常量也可以是局部常量。常量必须初始化,且不能二次修改。全局的常量规则与大小写一致。

指针

指针符号 * 、取地址符 &,功能上和 C语言几乎一模一样。指针还支持二级三级等指针。

package main
import "fmt"
func main() {
    var value int = 42;
    var pointer *int = &value
    fmt.Println(pointer, &pointer)
}

基本类型

符号整型: int8\int16\int32\int64 1~4字节
无符号整型: uint8\uint16\uint32\uint64
说明: int 类型在32系统占用64字节,在64位系统占用8个字节
布尔类型: bool
字节类型: byte
字符串类型: string
浮点类型: float
复数类型: complex64\complex128
unicode字符类型: rune
指针类型: uintptr
采用第一种变量的定义方式,编译器会自动赋初值,整型赋值 0, 字符串赋值 空串,布尔赋值 flase 等。

判断语句

判断的格式如下:

if [条件] {
    ...
} else if [条件] {
    ...
} else {
    ...
}

注意: Golang不支持三元运算符。

switch语法

第一种格式:

switch [条件] {
    case [值], [值..]:
        ...
    case [值]:
        ...
    ...
    default:
        ...
}

第二种格式:

switch {
    case [条件]:
        ...
    ...
    default:
        ...
}

循环

golang的循环语句通过 for 来实现, golang 没有提供 while 和 do while 的循环形式。

  1. 死循环
for {
    ...
}

for true {
    ...
}
  1. for 只带一个条件语句相当于 while 语句。带三个语句就是普通的 for 循环。
  2. golang可以通过 continue (跳出本次循环) 和 break (跳出循环) 控制循环体。
  3. golang支持 goto 语句, 不过建议不要使用,会使程序变得难以阅读。

数组

数组定义

示例:

var X = [3]int {1, 2, 3} 
var X [3]int =[3]int{1, 2, 3}
X := [3]int{1, 2, 3}

数组访问

package main
import "fmt"
func main() {
    var squares [9]int
    for i := 0; i < len(squares); i++ {
        squares[i] = (i+1)*(i+1)
    }
}

golang会对数值下标越界进行检查。
数组的赋值本质是一种浅拷贝,即赋值的两个数组变量的值不会共享。

package main
import "fmt"
func main() {
    var a = [9]int{1, 2, 3, 4}
    var b [9] int
    b = a
    a[0] = 123
    fmt.Println(a) //[123 2 3 4]
    fmt.Println(b) //[1 2 3 4]
}

不同长度的数组之间赋值时禁止的。

数组遍历

var a = [5]int{1, 2, 3, 4, 5}

for index := range a {
    fmt.Println(index, a[index)
}

for index, value := range a {
    fmt.Println(index, value)
}

本文总结自公众号 码洞,微信号:codehole。

© 著作权归作者所有

共有 人打赏支持
ExtreU
粉丝 3
博文 6
码字总数 8373
作品 0
莆田
私信 提问
Golang学习笔记目录

Golang 介绍 Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。...

ChainZhang
2017/12/26
0
0
golang入门学习笔记(四)

作者: 一字马胡 转载标志 【2017-11-25】 更新日志 日期 更新内容 备注 2017-11-25 新建文章 go语言入门学习笔记(四) golang入门学习笔记系列 golang入门学习笔记(一) golang入门学习笔...

一字马胡
2017/11/25
0
0
go语言文件汇总

归并排序及go语言实现 堆排序算法及go语言实现 Go语言基础学习(一)变量 【Leetcode】:Counting Bits问题 in Go语言 基于go语言的心跳响应 【Leetcode】:Single Number III问题 in Go语言 ...

d_watson
2016/04/15
127
2
Golang 学习笔记(10)—— mysql操作

本文为转载,原文:Golang 学习笔记(10)—— mysql操作 Golang go-sql-driver/mysql go操作mysql的驱动包很多,这里讲解当下比较流行的go-sql-driver/mysql 安装 执行下面两个命令: 安装完...

ChainZhang
01/04
0
0
Go语言基础学习:变量

Go语言基础学习(一)变量 猜你喜欢 Ceylon语言学习笔记(1) 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 go语言学习-常量 GO语言学习-复杂类型(2) Go语言学习...

d_watson
2016/04/15
12
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL自增属性auto_increment_increment和auto_increment_offset

MySQL的系统变量或会话变量auto_increment_increment(自增步长)和auto_increment_offset(自增偏移量)控制着数据表的自增列ID。 mysql> show tables;Empty set (0.00 sec)mysql> CREATE TA......

野雪球
15分钟前
0
0
OSChina 周三乱弹 —— 有一天考拉麻麻拉肚子了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @瘟神灬念 :分享周汇洋的单曲《Man Srae(曼斯拉之舞)》:美滋滋。。。。 手机党少年们想听歌,请使劲儿戳(这里) 我听了一下 赶紧关了, ...

小小编辑
今天
81
5
oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
7
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
6
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部