基本语法 - day 1

aside section._1OhGeD · · 647 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

变量的定义

/*使用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"

:=方式声明变量不适用于包作用域
在包作用域内的每一行必须是以funcpackageimportvarconst等关键字开始

内建变量类型

  • boolstring
  • (u)int(u)int8(u)int16(u)int32(u)int64uintptr
  • byte(8bits)、rune(32bits)
  • float32float64complex64complex128

intuint的大小随操作紫铜变化,在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中的条件语句包括ifswitch

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 {
//...
}

golangfor循环中的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中函数参数的传递方式只有值传递一种


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section._1OhGeD

查看原文:基本语法 - day 1

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

647 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传