Go语言(Golang)作为一门崇尚简洁的编程语言,主张使用20%的设计,解决80%的问题,他的全新设计思路,在如今21世纪非常值得我们去学习参考
它没有隐式数据类型转换,没有构造函数或者析构函数,没有运算符重载也没有继承、泛型、异常…但它却拥有垃圾搜集、一等函数、词法作用域以及channel等等
一.数据类型
整体类型 | 描述 |
---|---|
布尔型 | 布尔型的值只可以是常量 true 或者 false。例:var b bool = true |
数字类型 | 整型 int 和浮点型 float32、float64,Go 语言原生支持复数,其中位的运算采用补码 |
字符串类型 | 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本 |
派生类型 | 包括: (a) 指针类型(Pointer) (b) 数组类型 (c) 结构化类型(struct) (d) Channel 类型 (e) 函数类型 (f) 切片类型 (g)接口类型(interface) (h) Map 类型 |
整数类型 | 描述 |
---|---|
uint8 | 无符号 8 位整型 (0 到 255) |
uint16 | 无符号 16 位整型 (0 到 65535) |
uint32 | 无符号 32 位整型 (0 到 4294967295) |
uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
int8 | 有符号 8 位整型 (-128 到 127) |
int16 | 有符号 16 位整型 (-32768 到 32767) |
int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
浮点数&复数类型 | 描述 |
---|---|
float32 | IEEE-754 32位浮点型数 |
float64 | IEEE-754 64位浮点型数,浮点数默认类型 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数,复数默认类型 |
其他数字类型 | 描述 |
---|---|
byte | uint8别名,用来存放字符 |
rune | 等价int32,存放Unicode编码 |
uint | 32 或 64 位 |
int | 与 uint 一样大小 |
uintptr | 无符号整型,用于存放一个指针 |
package main
import (
"fmt"
"math"
)
func main() {
var a,b int =3,4
var c int
//强制类型转换,GO语言没有 隐式类型转换
c=int(math.Sqrt(float64(a*a+b*b))) //强制类型 转换
fmt.Println(c)
}
package main
import "fmt"
func variable(){
//定义变量, 变量名在前, 类型在后
var a int
var s string
fmt.Print(a,s) //打印Go语言变量的初值
fmt.Print("%d,%q\n",a,s)
}
func variableTypeDeduction(){
//自动推断类型
var s="abcd"
var a,b,c =1,true,"hello,world" //定义多个变量,即使不是同一类型
fmt.Println(s,a,b,c)
}
func variableShorter() {
a,b,c:=1,true,"hello,world" //定义变量,不使用var关键字
fmt.Println(a,b,c)
}
func variableInit() {
//定义变量 并 赋初值
var a int = 3
var b,c int =4,5
var s string="abc"
fmt.Println(a,b,c,s)
}
func main() {
variable() //定义变量
variableTypeDeduction() //自动推断类型
variableShorter() //自动推断类型 简写(函数外的包变量不可以简写)
variableInit() //定义变量并 赋初值
}
变量的声明 很像 javascript ,使用var关键字
常量很简单,使用const关键字
package main
import "fmt"
func main(){
var x int=100 //声明初始化一个变量
var str string="hello world"
var i,j,k int=1,2,3 //声明初始化多个变量
fmt.Printf("%d\t %s\t %d\t %d\t %d\n",x,str,i,j,k)
var b=true //bool型
fmt.Printf("%d\t %s\t",b,b)
x2:=100 //等价于 var x int=100;
fmt.Printf("%d\n",x2)
const s2 string="hello world"
const pi float32 =3.1415926
fmt.Printf("%s\t %f\n",s2,pi)
}