1.go 项目目录结构
go编程基本数据类型
2.go build生成二进制文件
go build hello.go
go build -o hellotest hello.go #可以指定二进制文件名
3.go run 以脚本形式运行
go run hello.go

4.定义变量方法
package main
import "fmt"
//全局声明
var n1 = 100
var n2 = 200
var name = "xiaohuihui"

//一次性声明
var (
n3 = 300
n4 = 900
name2 = "mary"
)
func main(){

var i int fmt.Println("i=",i) //默认值0  var num = 10.11 fmt.Println(num)  name := "tom" //等价于 var name string name = "tom"  fmt.Println(name)  var n1, n2, n3 int //多变量声明

fmt.Println(n1,n2,n3)

var a, b, c = 100, "tom", 111 fmt.Println(a,b,c) //a = 100,b="tom",c=111  //类型推导 a, b, c := 100, "tom", 111 fmt.Println(a,b,c)  //a = 100,b="tom",c=111

}

5.变量注意
package main
import "fmt"

func main(){
var i int = 10
i = 30
// 只能同一类型不断变化 不正确赋值i = "50"

//var i int = 50 //变量在同一作用域不能重名

}
6.加号运算
package main
import "fmt"

func main(){

var a,b int = 1,2 var resp int resp = a + b fmt.Println(resp)  var str1 = "gello" var str2 = "world" var res = str1 + str2 fmt.Println(res)

}

7.整数,有符号整数类型int int8,int16,int32,int64 ,无符号整数uint,uint8,uint16,uint32,uint64
package main
//import "fmt"

import (
"fmt"
"unsafe"
)

func main(){

var j int8 = -128  //int8 占1个字节,1个字节占8个bit  小于-128回报错 fmt.Println(j)  var i uint8 = 255 //uint 大于255回报错 0~255 fmt.Println(i)  var c byte = 255 // byte范围0~255,经常用来存字母 fmt.Printf("j 的类型%T", j) //Printf格式化输出变量类型 fmt.Printf("j 的类型%T, 占用字节数%d", j, unsafe.Sizeof(j))

}
8.浮点型float32单精度,占用4个字节,float64双精度(默认使用64),占用8个字节,浮点数都是有符号的
package main

import (
"fmt"
)

func main(){

var price float32 = 89.123 fmt.Println(price) var num1 float32 = -89.11111111111 //精度损失 var num2 float64 = -123.19100002333 fmt.Println(num1) fmt.Println(num2) var num3 = 1.1 fmt.Printf("num3数据类型 %Tn",num3)  //科学计数法表示小数 num4 := 5.1234566e2 fmt.Println(num4)

}

9.字符类型,保存的字符在ascii码中,用byte类型,超过0~255,用int类型
package main
import (
"fmt"
)

func main(){
var c1 byte = 'a'
var c2 byte = '0'
fmt.Println("c1=",c1) //97 输出ascii值 0~255
fmt.Println("c2=",c2) // 48
fmt.Printf("c1=%cnc2=%c",c1,c2) //输出a,0 输出ascii值

//var c3 byte = '北' //超出0~255 溢出   var c4 int = '北' //超过 255 可以输出 //fmt.Printf("c3=%c",c3)  //格式化输出正确的字符 fmt.Printf("c4=%c",c4)  var c5 int = 22269 //对应utf-8编码 22269--->国 fmt.Printf("c5=%c",c5)  var n1 = 10 + 'a' //10 + 字符a的ascii码值 fmt.Println(n1) //10 + 97 = 107

}

10.bool
package main
import (
"fmt"
"unsafe"
)

func main(){
var b = false
fmt.Println("b=",b)
fmt.Println("b的占用空间=",unsafe.Sizeof(b))//占用1字节
//bool只能是true或false,不能是0,1
}

11.字符串类型
package main
import (
"fmt"
)

func main(){
var address string = " nihao ,beijing!"
fmt.Println(address)

str1 := `main()` //``输出原生字符串 fmt.Println(str1)  var str2 = "hello " + "world" //拼接字符串 fmt.Println(str2)  var str3 = "hello " + "world" + "hello " + "world" + "hello " + "world" + "hello " + "world" fmt.Println(str3) //拼接长字符串, 加号留在行尾,这样就不会默认添加分号

}

12.数据类型转换
package main
import (
"fmt"
)

func main(){
var i int32 = 100
// i => float
var n1 float32 = float32(i)
var n2 int8 = int8(i)
fmt.Printf("i=%v n1=%v n2=%v",i,n1,n2)

fmt.Printf("i type is %Tn",i) //i本身没有变化,转换的是存储的值  var num1 int64 = 999999 var num2 int8 = int8(num1) //按照溢出处理,不会报错 fmt.Println(num2) //值是63

}

13.基本数据类型转string
package main
import (
"fmt"
)

//基本类型转string
func main(){
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
var myChar byte = 'a'
var str string //空值

//使用第一种方式转换fmt.Sprintf方法 str = fmt.Sprintf("%d", num1) fmt.Printf("str type %T str=%qn",str,str)  str = fmt.Sprintf("%f",num2) fmt.Printf("str type %T str=%qn", str,str)  str = fmt.Sprintf("%t",b) fmt.Printf("str type %T str=%qn", str,str)  str = fmt.Sprintf("%c",myChar) fmt.Printf("str type %T str=%qn", str,str)  //第二种方式,使用strconv函数 var num3 int = 88 var num4 float64 = 23.456 var b2 bool = true  //int --->string str = strconv.FormatInt(int64(num3),10) fmt.Printf("str type %T str=%qn",str, str)  //float ---> string str = strconv.FormatFloat(num4,'f',10,64) fmt.Printf("str type %T str=%qn",str, str)  //bool --->string str = strconv.FormatBool(b2) fmt.Printf("str type %T str=%qn",str, str)  var num5 int = 4567 str = strconv.Itoa(num5) //int ---> string

}

14.string转基本数据类型
package main
import (
"fmt"
"strconv"
)

//基本类型转string
func main(){
var str string = "true"
var b bool

// string --->bool // b, _ = strconv.ParseBool(str) //说明  strconv.ParseBool函数返回两个值 value bool,err error b, _ = strconv.ParseBool(str) fmt.Printf("b type %T b=%vn", b,b)  // string ---> int var str2 string = "123456780" var n1 int64 n1, _ = strconv.ParseInt(str2,10,64) fmt.Printf("n1 type %T n1=%vn", n1,n1)  // string ---> float var str3 string = "123.456" var f1 float64 f1, _ = strconv.ParseFloat(str3,64) fmt.Printf("f1 type %T f1=%v", f1,f1)  //转换失败设置成默认值0 var str4 string = "hello" var f2 float64 f2, _ = strconv.ParseFloat(str4,64) fmt.Printf("f2 type %T f2=%v", f2,f2)

}

15.指针
package main

import (
"fmt"
)

func main(){
var i int = 10
// i的地址 &符号获取地址
fmt.Println(&i) //0xc000018068

//var ptr *int = &i //1. ptr 是一个人指针变量 //2. ptr的类型是*int //3. ptr本身的值是&i var ptr *int = &i fmt.Println(ptr) //0xc000018068 fmt.Println(*ptr) //10 获取指针的值用*获取 fmt.Println(&ptr) //0xc00000e030 *ptr = 100 //修改i的值 fmt.Println(i)

}

注:
1.go语言入口是main函数
2.go语言严格区分大小写
3.go方法由一条一条语句构成,每条语句会自动加分号
4.go是一行一行编译因此一行一条语句,否则编译报错
5.go定义的变量或引入的包必须用到,否则报错
6.大括号成对出现

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论