第四章—基本结构和基本数据类型
自学Go所做的笔记,如有错误,请大佬指正!!!!谢谢大家!!!
4.1 文件名、关键字、标识符
- 标识符:数字、字母、下划线,其中不能以数字开始(这与c语言的表示符命名规则相同)。
- 符号 “_” :是一个特殊标识符,被称为特殊标识符,特点是,赋值个这一标识符的所有数据都会被抛弃。
- Go语言中还有25个关键字
Go语言中。每个语句后不需要以分号";"结尾,但需要换行(这与python相似,但与python以缩进决定语句又不同)
4.2 基本结构和要素
- 必须在文件的开头指名这一文件属于哪个包(package main)
- 引入必要的包(import “packageName”)
- 编写main函数(这一与c语言相似)
下面hello world 的例子说明了Go语言所需的基本结构
package main // 声明属于哪一包
import "fmt" // 引入需要用到的包
func main(){
fmt.Printfln("Hello world!")
}
包的引入格式
// 引入单独包
import "fmt"
// 因式分解引入多个包
import (
"fmt"
"os"
"time"
...
)
变量的可见性
以小写字母开头的标识符,对包外不可见;以大写字母开头的标识符,对包外可见。(这与java中的私有变量,公有变量类似)
注:Go中,你必须使用你所定义的所有变量。因为Go遵循“没有不必要的代码”这一原则!
Go注释:
- “//” 表示单行注释
- “/* */” 表示多行注释
4.3 类型
定义:变量(常量)包含数据,这些数据可以有不同的数据类型,简称类型
Go中基本类型:int、float、bool、string
Go中结构化类型:struct、array、slice、map、channel
Go中接口类型:interface
使用var关键字声明变量的值会自动初始化为该类型的零值。结构化类型初始化为nil(表示空)
使用关键字type可以自定义类型
// 自定义一个类型
type typeName type
// 因式分解自定义多个类型
type (
typeName1 type
typeName2 type
typeName3 type
....
)
类型转换
在Go语言中数据类型的转换必须显示转换。
/*
转化格式 valueOfTypeB = Typeb(valueOfTypeA)
*/
var a int = 10
var b float64 = float64(a)
注:进行类型转换时,应注意精度丢失
相同底层类型的变量之间可以相互转换
type IN int
var a IN = 5
var c int
c = int(a)
a = int(c)
4.4 常量
Go中常量使用关键字const定义,这与C语言相同
Go中常量只能为布尔型(bool)、整型(int)、浮点型(float)、复数、字符串型
// 定义格式
const identifier [type] = value
// 显式定义
const selfConst int =10
// 隐式定义
const selfConst = 10
注:常量的值必须在编译时就能确定,否则将会报错
常量还可以用做枚举
// 枚举实例
const (
Unknow = 0
Female = 1
Male = 2
)
/*
使用iota进行枚举
iota初始值为0,每进行新的一行就自增1,
没有赋值的常量会默认使用上一行的赋值表达式
*/
const (
Unknow = iota
Female = iota
Male = iota
)
4.4 变量
使用关键字 var 声明变量。
/*
变量声明格式:var identifier type
*/
// 逐一声明变量
var a int
var b bool
var str string
// 因式分解声明变量 (这个一般用于声明全局变量)
var(
a int
b bool
str string
)
// 自动推断声明变量 (在声明自动推断变量,要同时进行赋值,否则直接报错)
// 自动推断声明变量格式:var identifier = value
// 逐一自动推断声明变量
var a = 1
var b = true
var str = "Hello World!"
// 因式分解自动推断变量
var (
a = 1
b = true
str = "Hello World!"
num int
)
使用 := 定义变量和初始化变量只能在函数体中使用。即 :=只能用于声明局部变量,局部变量定义了必须使用。
// 通一类型变量可以在同一行定义,和赋值
var a, b, c int
a, b, c = 1, 2, 3
// 交换变量
a, b = b, a
4.5 指针
指向一个值的内存地址。
Go中使用符号 & 获取变量的地址, 使用符号 * 解地址
// 指针变量定义 var identidier *type
注:指针不能用于获取常量的地址
自学Go所做的笔记,如有错误,请大佬指正!!!!