码迷,mamicode.com
首页 > 其他好文 > 详细

golang学习总结

时间:2019-01-24 00:17:57      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:相关   value   byte   1.3   asd   布尔   相互   spl   short   

学习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] ,"\t") // 104    101 108 108 111 32  119 111 114 108 100
        //讲字节编码转为字符串输出
        fmt.Printf("%c\t", 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, "\t", 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学习总结

标签:相关   value   byte   1.3   asd   布尔   相互   spl   short   

原文地址:https://www.cnblogs.com/hu1056043921/p/10312072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!