golang 声明与 iota 关键字

Hello World

package main
import "fmt"

func main() {
	fmt.Println("Hello World")
}

第一行代码 package main 定义了包名。main 的话会编译成一个可执行文件,main 是程序入口。

下一行 import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。

编译

  • go build

  • go run filename.go 像脚本文件一样执行 go 代码

安装

go install 先编译,然后将生成的 exe 拷贝到 bin 目录下,由于 bin 目录已经添加到环境变量,因此任何位置可以直接执行这个 exe

标识符

  • 函数外只能放置标识符声明
  • 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public)。
  • 标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

使用 := 赋值操作符

a := 50 或 b := false。a 和 b 的类型(int 和 bool)将由编译器自动推断,类似 C++ 的 auto。

这是使用变量的首选形式,但是它只能被用在函数体内,而不可以用于全局变量的声明与赋值

使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误。

变量和常量

变量

var s1 = string 静态类型语言,之后 s1 只能是 string

  • 批量声明
	var(
	    name string // ""
	    age int		// 0
	    isOk bool	// false
	)
  • 变量初始化
	name = "zhangsan"
	age = 16
	isOK = true

常量

  • 普通声明
	const pi = 3.1415926
  • 批量声明
	const(
	    OK = 200
	    NOTFOUND = 404
	)
  • 批量声明特殊情况
	const(
		n1 = 100
		n2		// n2 = 100
		n3		// n3 = 100
	)

如果某一行声明后没有赋值,默认和上一行一致。

声明注意事项

  • 必须先声明再使用
  • 函数内声明不使用会报错,函数外可以不使用

const 与 iota

iota 在 const 出现时被重置为 0,const 每新增一行常量的声明,iota会计数一次。

const (
	a1 = iota // a1 = 0
	a2		  // a2 = 1
	a3		  // a3 = 2
)
const (
	b1 = iota // 0
	b2        // 1
	_		  // 实际上自增了 1,目前是 2,但是丢弃了
	b3 		  // 因此这里是 3
)
// 插队
const (
	c1 = iota // 0
	c2 = 100  // c2 = 100 iota = 1
	c3 = iota // iota = 2 c3 = 2
	c4        // iota = 3 c4 = 3
)

c2 = 100 时,iota 还是有自增 1 的。

const (
	c1 = iota // 0
	c2 = 100  // c2 = 100 iota = 1
	c3        // c3 = 100
	c4        // c4 = 100
	c5 = iota // c5 = 4
)
const (
    d1, d2 = iota + 1, iota + 2 // d1 = 1, d2 = 2
    d3, d4 = iota + 1, iota + 2 // d3 = 2, d4 = 3
)

必须要新增一行 iota 才会加一,同一行中 iota 不会发生改变。

注意事项

  • go 没有缩进概念
  • go fmt 格式化代码
  • 使用小驼峰命名

参考资料

  • Go 指南
  • Go 语言教程-菜鸟教程

你可能感兴趣的:(golang 声明与 iota 关键字)