Golang基本用法(一)

go简单介绍,数据类型,变量

Posted by Hzy on November 11, 2019

本文总结了一些学习go时的一些笔记,日后回顾也能图个方便。

Go的一些简单特性

  • go代码相对其他静态语言来说代码会比较简短,学习起来会比较”容易“上手
  • go语言可以直接编译成各个平台的可执行文件,所以编译出来的文件可以在大多数操作系统上运行。
  • go速度,性能相对来说也是不错的,对比python,那是好太多了,跟java,c++,也能有得一比,感兴趣的话,可以去一些对比语言性能的网站上查看.
  • Go语言原生支持并发,支持协程,协程中通过管道来通信,对新手来说,可以比较容易写出高并发的程序。
  • 还有很多,俺不知道!

go一些基本语法及使用

1.变量

1.1 变量的两种声明方式

1
2
3
4
5
var test int // 通过var 变量名 变量类型 来声明
// 通过 := 缩写来定义变量,编译器会自动判断类型
s := "test" //声明string类型变量
i :=10 //声明int类型变量
f :=9.9 //声明float类型变量

1.2 变量的初始化

  • 整形和浮点数默认为0
  • 字符串默认为空值。
  • 切片 函数 指针 等默认为nil

1.3 匿名变量

  • 使用 _ 下划线可以使用匿名变量,在go中所有变量都必须要被使用,某则会报错,这时候匿名变量就有用啦!

2.数据类型

2.1 整型

  • 整型: int8 int16 int32 int64 uint8 uint16 uint32 uint64

    2.2 浮点数

  • 浮点数:float32 float64

    2.3 布尔型

  • truefalse

    2.4 字符串

  • 单行时使用 ""
  • 多行时使用 `` 就是键盘1上的符号

    2.5 字符

  • 用单引号表示

3.数据类型转换 :int,bool,float

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
	"fmt"
	"strconv"
)

func main() {
	//强制转换
	var intt int
	fmt.Printf("%T\n", intt) //int
	fmt.Printf("%T\n", string(intt)) //string
	fmt.Printf("%T\n", float64(intt)) //float64
	//字符串转int
	str := "33"
	fmt.Printf("%T\n", str) //string
	str_int, _ := strconv.Atoi(str)  
	fmt.Printf("%T\n", str_int) //int 
	// 字符串转float
	f:="33.3"
	str_float64,_ := strconv.ParseFloat(f,64)
	fmt.Printf("%T\n",str_float64) //float64
	// 字符串转bool
	b :="true"
	str_bool,_ :=strconv.ParseBool(b)
	fmt.Printf("%T\n",str_bool) //bool
}

3.5数据类型别名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func main() {
	//类型定义
	type intt int
	type intAlias  = int
	var i intt
	var ii intAlias
	fmt.Printf("%T\n",i)
	//输出:main.intt
	fmt.Printf("%T",ii)
	//输出int
}

4.指针的简单认识

4.1 指针地址

指针代表了一个变量运行时在内存中的地址

1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
	t :=12312312
	//& 代表 取出变量中的地址,即取地址
	fmt.Printf("%p",&t)
}

4.2 指针类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "fmt"

func main() {
	intt := 123
	inttPtr := &intt //创建整数型指针
	f :=33.3
	fPtr  := &f //创建浮点型指针
	str :="xxx"
	strPtr := &str //创建字符串型指针
	fmt.Printf("%T %T\n",intt,inttPtr)
	fmt.Printf("%T %T\n",f,fPtr)
	fmt.Printf("%T %T\n",str,strPtr)
	/*
	输出:
	int *int
	float64 *float64
	string *string
	*/
}

提醒:也可以使用new来创建指针变量,像这样str:=new(string)

4.3指针中取值

取出地址中存放的值!使用*来表示指针取值

1
2
3
4
5
6
7
8
9
fmt.Printf("%d\n", *inttPtr)
fmt.Printf("%f\n", *fPtr)
fmt.Printf("%s\n", *strPtr)
/*
输出 
123
33.300000
xxx
*/