golang学习总结

Posted hu1056043921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang学习总结相关的知识,希望对你有一定的参考价值。

学习golang注意点:

  1. 导的包必须使用;或者使用_未使用的包,作用是调用该包下的初始化方法。
  2. 局部变量声明必须使用。
  3. go语言的包和java的相似,包名.变量访问

1. 初识go语言

1.1 Hello World

package main

import "fmt"

func main() {
    fmt.Println("hello world");
}

1.2 go 数据类型

布尔:

var a bool = true
var b bool = false

整型:

整型分为有符号和无符号的类型

8, 16 ,32 分别代表位数

int: 根据系统决定是32位还64位

int8: 1个字节,-128~127 相当于java中的short;

int16: 2个字节,-215 ~ 215 -1

int32: 4个字节 -231 ~231 - 1

int64: 8个字节-263 ~263 - 1

uint : .....

无符号整形都是取值0~216 - 1

var a int = -3
var b uint = 3 //uint类型不可以为负数

浮点型:

var a float32 = 100.0
var b float64 = 100.00 //默认

字符类型

golang中的字符使用的是字节保存的,本质就是一个int32类型

var a byte = 'a'
var b byte = 'c'
fmt.Print(a, "===", b)  //输出的是该字节对应的字节码: 97===99
fmt.Printf("%c === %c", a, b) // a === c

字符串型:

var str string = "hello world"
//多行字符串,不需要使用+来连接多行
var str2 string = `a 
        asda asdasdadsadasd `

复数类型:

complex64 是两个float32组成 complex128两个float64组成

var a complex64 = 10 + 3i
var b complex128= 10 + 3i //默认

相关操作

var v= complex(2 , 3) //构造1个复数, 
a := real(v) //返回复数实部 2
b := image(v) 返回复数虚部 3

rune类型:

// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.

//int32的别名,几乎在所有方面等同于int32
//它用来区分字符值和整数值
type rune = int32

1.3 变量常量

局部变量:

属于函数或者方法;声明之后必须使用

var a = 3;
var b int = 3;
c := 3

全局变量

b := 10 这种全局变量声明是错误的

全局变量的概念:隶属于,声明之后可以不使用

var a int
var (
    c int
    d string
)
var e = 3

常量

局部

const a = 3

全局

const a int = 10
const b  = 20
const (
    d int = 10
    e string = "ss"
    f = 30
) 

1.5 字符串相关操作

golang中string底层是通过byte数组实现的,byte使用utf-8编码标识的Unicode文本,每个汉字占3个字节

  1. 求长度
func strDemo() {
    fmt.Println(len("hello")) //5
    fmt.Println(len("中")) //3
    fmt.Println(len([]rune("中"))) //1, 正确获取中文字符串长度
}
  1. 字符串遍历
//对中文无法支持
func strEach() {
    str := "hello world"
    for i := 0; i < len(str); i ++ {
        //fmt.Print(str[i] ,"	") // 104    101 108 108 111 32  119 111 114 108 100
        //讲字节编码转为字符串输出
        fmt.Printf("%c	", str[i]) //h  e   l   l   o       w   o   r   l   d
    }
}
func strEach() {
    str := "hello world 中国"
    for i, s := range str {
         //0    h1  e2  l3  l4  o5   6  w7  o8  r9  l10 d11  12 中15 国
        fmt.Print(i, "	", string(s))
    }
}

//这个可以正确的输出索引
func strEachRune() {
    str := "中国人民"
    for i, s := range []rune(str) {
        fmt.Println(i, string(s))
    }
}
  1. 其他操作
str := "中国人民, hello world"
index := strings.Index(str, "国") //存在则 index > -1, 否则 == -1   此时index=-3
split := strings.Split(str, ",")
replace := strings.Replace(str, "o", "2", 1) //第三个参数标识替换几个,小于0,则替换所有
result := strings.EqualFold("中国", "中国2") //不区分大小写
fmt.Println("中国" == "中国H") //区分大小写, 同strings.Compare()5

1.6 相互转换

以上是关于golang学习总结的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

代码片段 - Golang 实现集合操作

Go 语言学习总结—— 学习Golang-从零到大师

Go 语言学习总结—— 学习 Golang 从零到大师

Go-Golang学习总结笔记

Python学习总结