ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

知道golang不?

2021-07-18 17:33:17  阅读:149  来源: 互联网

标签:字符 fmt golang 字符串 Println Go main 知道


标识符与关键字

标识符

在编程语言中标识符就是程序员定义的具有特殊意义的词。

关键字

关键字是指编程语言中预先定义好的具有特殊意义的字。

变量的来历

变量的类型

变量的声明

标准声明

声明变量

var str string;声明变量类型 

package main 

// 批量声明
import "fmt"

var (name string
	age int
	isOk bool)

func main(){
	name = "小王"
	age = 14
	isOk = true
	// Go语言中变量声明必须使用,不使用就编译不过去
	fmt.Printf("name:%s",name)
	fmt.Println();
	fmt.Print(isOk)
	fmt.Println();
	fmt.Println(age)
	
}

变量声明赋值(代码段)

// 声明变量同时赋值
	var baby string = "yan"
	fmt.Println(baby)

	// 类型推导(根据值的判断类型)
	var s2 = "heiheihei"

	fmt.Println(s2)
	
	s3 := "heiheihei"

	fmt.Println()

	fmt.Print(s3)

	fmt.Println()

常量

定义了常量之后就不可以修改

在程序运行期间不会改变的量

常量使用

package main

// 常量

const pi = 3

func main (){
	
}

常量默认声明

// 如果批量声明常量是,如果某一行没有赋值,默认就和上一行一致
const (
	n1 = 100
	n2
	n3
)

iota

iota 是go语言的常量计数器,只能在在常量的表达式中使用。

iota在const关键字出现时将被重置为0.const中每新增一行常量将使iota计数增加一次。使用iota能简化定义,在定义枚举时很有用。

const (
	s1 = iota
	s2
	s3
	s4
)

func main (){
    fmt.Println("s1:",s1)
	fmt.Println("s2:",s2)
	fmt.Println("s3:",s3)
}

Go语言之基本数据类型

常见数据类型

整型

整形分为以下两个大类:无符号和有符号

特殊类型

unint

int

uintptr 无符号整形,用于存放一个指针

八进制&十六进制

Go语言中无法直接定义,关于八进制和十六进制。

o 开头的就是八进制
0x开头的就是 16进制

浮点型

package main

import "fmt"
import "math"

func main(){
	f1 := 12.45
	fmt.Printf("%f\n",f1);

	const f2 = math.MaxFloat32; // 最大的数
	fmt.Printf("%f\n",f2);
    
    f3 := 1.123456
	fmt.Printf("%T\n",f3) // 默认Go 语言中的小数是float64类型

	f4 := float32(1,234532)

	fmt.Printf("%T\n",f4)

	f5 = f4 // float32类型的值不能直接赋值给float64类型的变量
}

复数

complex64 和complex128

var c1 complex64
	
	c1 = 1+ 2i
	
	var c2 complex128
	
	c2 = 2 + 3i
	fmt.Println(c1)
	fmt.Println(c2)

复数有实部和虚部,complex64的实部和虚部为33位,complex的实部和虚部为64位

布尔值

Go语言中以 bool 类型进行声明布尔型数据,布尔型数据只有true和false两个

package main 

import "fmt"

// bool 默认是false
var (v bool)

func main(){
	
	fmt.Println(v);
}

1.布尔值类型变量的默认值为false

2.Go语言中不允许将整型强制转换为布尔型

3.布尔型无法参与数值运算,也无法与其他类型转换

字符串类型

Go语言中的字符串已原生数据类型出现,使用字符串就像其他原生数据类型一样。

Go语言里面的字符串的内部事项使用UTF-8b编码。字符串的职位双引号中内容,可以在Go语言的源码里面加入ASCII码字符,例如:

s1 = "hello"
s3="你好"

// 字节 : 1 字节 = 8bit
1 个字符 “A” = 1 个字节
// 1个utf8编码的汉字‘沙’= 一般占3个字节

字符串如何拼接

name : = "hello"
w: = "world"

fmt.Println(ss);

ss1 := fmt.Sprintf("%s%s",name,world)

fmt.PrintF("%s%s",name,world)

fmt.Println(ss1)

ret := strings.Split(ss,"\\")

fmt.Println(ret)

字符串的方法

Split 按字符分割成新的数组
Contains 字符串是否包含某个字符
HasPrefix 字符串以什么开头
HasSuffix 字符串以什么结尾



name := "hello";
	world :="world!";
	ss := name + world

	fmt.Println(ss)
	ss1 := fmt.Sprintf("%s%s",name,world)

	fmt.Println(ss1)

	ret := strings.Split(ss,"\\")

	fmt.Println(ret)

	ret1 := strings.Contains(ss1,"world")

	fmt.Println(ret1)

	ret2 := strings.HasPrefix(ss1,"hello")

	fmt.Println(ret2)

	ret3 := strings.HasSuffix(ss1,"world")

	fmt.Println(ret3)

	ret4 := strings.Index(ss1,"or")

	fmt.Println(ret4)

	ret5 := strings.LastIndex(ss1,"or")

	fmt.Println(ret5)

	// ret6 := strings.Join(ss1," ")

	// fmt.Println(ret6)

helloworld!
helloworld!
[helloworld!]
true
true
false
6
6

字符串修改及类型转换

byte 和 rune类型

Go语言中为处理非ASCII码类型的字符 定义了行的rune类型

package main 

import "fmt"

func main(){
	s:= "bsx"

	// len() 求得是byte字节的数量
	n := len(s) // 求得字符串s的长度,把长度保存到变量n中

	fmt.Println(n);
	// fmt.Println(n)

	// for i := 0; i < len(s); i ++{
	// 	fmt.Println(s[i])

	// 	fmt.Printf("%c\n",s[i])// %c:字符
	// }

	for _,c :=range s{ // 字符串中拿出具体的字符
		fmt.Printf("%c\n",c)// %c: 具体字符
	}
}

Go语言的字符有以下两种:

uint8类型,或者叫byte类型,代表了ASCII码的一个字符。

runt类型,代表一个UTF-8字符

当需要处理中文、日文或者其他复合字符是,则需要用到rune类型,rune类型实际上是一个int32位

Go使用了特殊的rune类型来处理Unicode,让基于Unicode的文本处理更为方便,也可以使用byte类型进行默认处理,性能和扩展性都有照顾

for i := 0; i < len(s); i ++{
		fmt.Println(s[i])

		fmt.Printf("%c\n",s[i])// %c:字符
	}

	for _,c :=range s{ // 字符串中拿出具体的字符
		fmt.Printf("%c\n",c)// %c: 具体字符
	}

修改字符串

要修改字符创,需要先件其转换为[]rune或者[]byte,完成后再转换为string.无论哪种转换,都会重新分配内存,并复制字节 数组

package main 

func main(){
    s2 := "白萝卜"; // '白', '萝','卜'
	s3 := []rune(s2);// 把字符串强制转换为一个rune切片
	s3 [0] = '红';

	fmt.Println(string(s3))// 把切片强制转换为字符串
}

// 这里的单引号和双引号是不同的

// 单引号是 int32位
// 双引号是string类型

标签:字符,fmt,golang,字符串,Println,Go,main,知道
来源: https://blog.csdn.net/m0_53742024/article/details/118879483

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有