Go 基础之数据类型、变量
2015-08-01 16:06
369 查看
Go 是一种类 C 语言,大部分语法和 C 类似。
一、第一个 go 程序,Hello world。
在不引起语义混淆的情况下,Go 可以省略句末的分号,编译器会在每句末尾自动加上分号;并且强制要求左花括号位于句末,另起一行会出现编译错误。
首行这个是必须的。所有的 Go 文件以
将
在 Go 中, package 总是首先出现,然后是 import,接着是其他所有内容。当 Go 程序在执行的时候,首先调用的函数是 main(),这是从 C 中继承而来。
Go 的注释可以用 C 风格注释 /* */ 和 C++ 风格注释 / /。
二、变量、数据类型
1、变量
Go 声明变量时类型放在变量名之后
多个 var 的声明可以成组(使用圆括号),const 和 import 同样可以如此做。相同类型的多个变量可以放在同一行,也可以使用平行赋值。一个特殊的变量名 _ 表示赋给它的值都将被丢弃。
注意:Go 编译器对声明但未使用的变量会报错。
2、类型
bool 类型
值为 true 和 false。
数字类型
整型
有符号整数:
无符号整数:
赋值可以用八进制、十六进制或科学计数法: 077, 0xFF, 1e3 或者 6.022e23 这些都是合法的。
注意:
注意:不同的数据类型之间不能混用,否则会出现编译出错。Go 的数据类型不支持隐式转换,必须显示转换。
浮点型
常量
常量(const)是在编译时被创建。只能是数字,字符串和布尔型。可以使用
字符串
字符串在 Go 中是 UTF-8 的由双引号(”“)包裹的字符序列。如果你使用单引号(”)则表示一个字符( UTF-8编码)——这种在 Go 中不是 string。
注意:一旦给变量赋值,字符串就不能修改了:在 Go 中字符串是不可变的。
多行字符串连接需要将 “+” 放在当前行尾部,不要放在下一行开头,否则编译器会误解加入分号导致错误。另一种方式是使用反引号 ` 作为原始字符串符号,但是此时引号中的转义字符不会被转义。
rune
Rune 是 int32 的别名。用 UTF-8 进行编码。一般用在需要遍历字符串中的字符。可以循环每个字节(仅在使用 US ASCII 编码字符串时与字符等价,而它们在 Go 中不存在!)。因此为了获得实际的字符,需要使用 rune 类型。
复数
Go 原生支持复数。默认变量类型是
将会打印: (5+5i)。
注意:对于简写形式复数声明赋值如
错误
Go 有为了错误而存在的内建类型,叫做 error。
一、第一个 go 程序,Hello world。
package main import "fmt" // 实现格式化的 I/O /* Print something */ func main() { fmt.Printf("Hello, world\n") }
在不引起语义混淆的情况下,Go 可以省略句末的分号,编译器会在每句末尾自动加上分号;并且强制要求左花括号位于句末,另起一行会出现编译错误。
首行这个是必须的。所有的 Go 文件以
package <something>开头,对于独立运行的执行文件必须是
package main;
将
fmt包(函数库)导入到
main,可以使用小括号导入多个包,如
import ( "fmt" "io" )
在 Go 中, package 总是首先出现,然后是 import,接着是其他所有内容。当 Go 程序在执行的时候,首先调用的函数是 main(),这是从 C 中继承而来。
Go 的注释可以用 C 风格注释 /* */ 和 C++ 风格注释 / /。
二、变量、数据类型
1、变量
Go 声明变量时类型放在变量名之后
var varname vartype。其中 var 为声明变量的保留字。Go 编译器会对未初始化的变量自动赋值其类型的 0 。
/* 先声明,后初始化 */ var a int // 声明 int 类型变量 var b bool // 声明 bool 类型变量 a = 10 // 赋值 b = true /* 声明变量并初始化 */ var c int = 12 /* 声明并赋值的简写形式,变量类型是根据值推断出来的,但是只能用在函数内部 */ d := 8
多个 var 的声明可以成组(使用圆括号),const 和 import 同样可以如此做。相同类型的多个变量可以放在同一行,也可以使用平行赋值。一个特殊的变量名 _ 表示赋给它的值都将被丢弃。
/* 成组声明变量 */ var ( ia int bb bool ) /* 相同类型变量同行声明 */ var ic, id int var ic, id int = 1, 2 // 声明并初始化 /* 平行赋值 */ ie, bg := 3, true // ie = 3, bg = true _, bg := 3, true // 3被丢弃
注意:Go 编译器对声明但未使用的变量会报错。
2、类型
bool 类型
值为 true 和 false。
数字类型
整型
有符号整数:
int int8 int16 int32 int64
无符号整数:
uint uint8(byte) uint16 uint32 uint64
byte是
uint8的别名,
rune是
int32的别名。
赋值可以用八进制、十六进制或科学计数法: 077, 0xFF, 1e3 或者 6.022e23 这些都是合法的。
注意:
int类型是和系统相关的,在 32位操作系统上是32位,64为操作系统上时64位。其他类型都和系统类型无关。
注意:不同的数据类型之间不能混用,否则会出现编译出错。Go 的数据类型不支持隐式转换,必须显示转换。
var a int = 2 var b int32 b = a + a // 错误,int 不能隐式转换为 int32 b = b + 5 // 可以
浮点型
float32 float64
常量
常量(const)是在编译时被创建。只能是数字,字符串和布尔型。可以使用
itoa生成枚举值,第一次使用时值为 0,再一次在新行使用时值加 1。
const x = 4 // 声明常量 /* 成组声明 */ const ( x1 = 4 y1 = true ) /* itoa生成枚举值 */ const ( a = iota // a = 0 b = iota // b = 1 c // c = 2 可以省略重复的 itoa,其值自动加 1 )
字符串
字符串在 Go 中是 UTF-8 的由双引号(”“)包裹的字符序列。如果你使用单引号(”)则表示一个字符( UTF-8编码)——这种在 Go 中不是 string。
注意:一旦给变量赋值,字符串就不能修改了:在 Go 中字符串是不可变的。
var s string = "hello" s[0] = 'c' // 报错 /* 先转换在修改 */ s := "hello" c := [] byte(s) 0. c[0] = 'c' 1. s2 := string(c) 2. fmt.Printf("%s\n", s2)
多行字符串连接需要将 “+” 放在当前行尾部,不要放在下一行开头,否则编译器会误解加入分号导致错误。另一种方式是使用反引号 ` 作为原始字符串符号,但是此时引号中的转义字符不会被转义。
s := "Starting part" + "Ending part" // 会被转换为: s := "Starting part" ; + "Ending part" ; // 这是错误的语法,应当这样写: s := "Starting part" + "Ending part" // 使用反引号 ` 作为原始字符串符号,但转义字符不被解释 s := `Starting part // s 中含有换行符 Ending part`
rune
Rune 是 int32 的别名。用 UTF-8 进行编码。一般用在需要遍历字符串中的字符。可以循环每个字节(仅在使用 US ASCII 编码字符串时与字符等价,而它们在 Go 中不存在!)。因此为了获得实际的字符,需要使用 rune 类型。
复数
Go 原生支持复数。默认变量类型是
complex128( 64 位虚数部分)。还有
complex64(32 位的虚数部分)。复数写为
re + im i,
re是实数部分,
im是虚数部分,而
i是标记 ‘i’ ( √− 1)。
var c complex64 = 5+5i; fmt.Printf("Value is: %v", c)
将会打印: (5+5i)。
注意:对于简写形式复数声明赋值如
v := a + bi,
b必须存在,否则出现
i无定义。
错误
Go 有为了错误而存在的内建类型,叫做 error。
相关文章推荐
- uva5318 The Goddess Of The Moon dp+矩阵快速幂
- google code jam 2009 round1 c
- zoj 1951 Goldbach's Conjecture(素数筛选继续水)
- HDU 4983/BC 6C Goffi and GCD
- HDU 5318 The Goddess Of The Moon
- HDU 4982/BC 6B Goffi and Squary Partition
- Google Interview - 警察到房间的最短距离
- client 提交post 到 django出现403错误
- golang package(time)
- Wide 的产品定位
- 7.31 Django学习第三章
- HDU 3635--Dragon Balls【并查集,有技巧】
- Go语言练习:go语言与C语言的交互——cgo
- GO语言练习:反射
- Golang 简介及配置
- django
- Django Book CH3(视图和URL配置)
- django book学习笔记――视图和URL配置
- DP+矩阵快速幂 HDOJ 5318 The Goddess Of The Moon
- Django(二)——管理页面的操作