基本语法 - day 1
aside section._1OhGeD · · 1253 次点击 · · 开始浏览变量的定义
/*使用var定义*/
//隐式初始值(初始化为零值)
var num1 int
var str2 string
//显式初始值
var num2 int = 12
var str2 string = "xiaohei"
//类型自动推断
var a, b, c = 3, 5, "xiaohei"
/*:=方式声明变量*/
f, g := 12, "min"
:=方式声明变量不适用于包作用域
在包作用域内的每一行必须是以func、package、import、var、const等关键字开始
内建变量类型
-
bool、string -
(u)int、(u)int8、(u)int16、(u)int32、(u)int64、uintptr -
byte(8bits)、rune(32bits) -
float32、float64、complex64、complex128
int和uint的大小随操作紫铜变化,在32位系统中是32位大小,在64位系统中是64位大小
complex64中实部和虚部大小分别为32bits,complex128中实部和虚部的大小分别为64bits
常量的定义
const a, b = 3, 4
const str string = "min"
当常量没有显示声明类型时,可以当做各种类型使用(也可以声明为特定的类型)
枚举类型
const (
cpp = 0
java = 1
python = 3
)
const中可以使用iota自增赋值
const (
cpp = iota
java
python
)
iota会每行自增一次,而不管是否使用
iota可以放到表达式中进行计算,然后再赋值
条件语句
golang中的条件语句包括if和switch
if语句
if statement; condition {
// ...
}
or
if condition {
// ...
}
读文件:
contents, err := ioutil.ReadFile(filename)
switch语句
//在switch后进行条件判断
switch coinflip() {
case "heads":
heads++
case "tails":
tails++
default:
fmt.Println("landed on edge!")
}
or
//在case中进行条件判断
x := 12
switch {
case x > 0:
return +1
default:
return 0
case x < 0:
return -1
}
golang中的switch中不需要break语句,默认不会执行下一个case;当需要执行下一个case时需使用fallthrough语句
循环语句
golang中的循环语句只有for一种
for init; condition; post {
//...
}
golang中for循环中的init、condition、post都可以省略,以此实现while循环和死循环
函数
func div(a, b int) (int, int) {
//...
}
func div2(a, b int) (q, r int) {
//...
}
向函数作为参数传入:
func apply(op func(int, int) int, a, b int) int {
//...
}
可变参数列表:
func sum(numbers ...int) int {
//...
}
指针
golang中的指针不可以运算
var a int = 2
var pa *int = &a
*pa = 3
//now a's value is 3
golang中函数参数的传递方式只有值传递一种
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
变量的定义
/*使用var定义*/
//隐式初始值(初始化为零值)
var num1 int
var str2 string
//显式初始值
var num2 int = 12
var str2 string = "xiaohei"
//类型自动推断
var a, b, c = 3, 5, "xiaohei"
/*:=方式声明变量*/
f, g := 12, "min"
:=方式声明变量不适用于包作用域
在包作用域内的每一行必须是以func、package、import、var、const等关键字开始
内建变量类型
-
bool、string -
(u)int、(u)int8、(u)int16、(u)int32、(u)int64、uintptr -
byte(8bits)、rune(32bits) -
float32、float64、complex64、complex128
int和uint的大小随操作紫铜变化,在32位系统中是32位大小,在64位系统中是64位大小
complex64中实部和虚部大小分别为32bits,complex128中实部和虚部的大小分别为64bits
常量的定义
const a, b = 3, 4
const str string = "min"
当常量没有显示声明类型时,可以当做各种类型使用(也可以声明为特定的类型)
枚举类型
const (
cpp = 0
java = 1
python = 3
)
const中可以使用iota自增赋值
const (
cpp = iota
java
python
)
iota会每行自增一次,而不管是否使用
iota可以放到表达式中进行计算,然后再赋值
条件语句
golang中的条件语句包括if和switch
if语句
if statement; condition {
// ...
}
or
if condition {
// ...
}
读文件:
contents, err := ioutil.ReadFile(filename)
switch语句
//在switch后进行条件判断
switch coinflip() {
case "heads":
heads++
case "tails":
tails++
default:
fmt.Println("landed on edge!")
}
or
//在case中进行条件判断
x := 12
switch {
case x > 0:
return +1
default:
return 0
case x < 0:
return -1
}
golang中的switch中不需要break语句,默认不会执行下一个case;当需要执行下一个case时需使用fallthrough语句
循环语句
golang中的循环语句只有for一种
for init; condition; post {
//...
}
golang中for循环中的init、condition、post都可以省略,以此实现while循环和死循环
函数
func div(a, b int) (int, int) {
//...
}
func div2(a, b int) (q, r int) {
//...
}
向函数作为参数传入:
func apply(op func(int, int) int, a, b int) int {
//...
}
可变参数列表:
func sum(numbers ...int) int {
//...
}
指针
golang中的指针不可以运算
var a int = 2
var pa *int = &a
*pa = 3
//now a's value is 3
golang中函数参数的传递方式只有值传递一种