标签:Lang string fmt 数据类型 Println exchangeStr Go strB strA
Go的数据类型可以分为,基础数据类型和派生数据类型
基础数据类型
- 数值型(int,uint,float)
- 字符型(bype)
- 布尔型(bool)
- 字符串(string)
派生类型
- 指针
- 数组
- 结构体
- 管道
- 函数
- 切片
- 接口
- map
基础类型的申明代码
var i int=1;
var s string="hello";
var b bool = true;
var bt byte=104;//对应字母 h
fmt.Println("基础类型", i, s, b, bt)
fmt.Println(string(bt))
输出结果
基础类型 1 hello true 104
h
指针的申明及使用
var strA,strB = "strA", "strB";
fmt.Println("==================================== ") ;
fmt.Println("strA = ", strA) ;
fmt.Println("strB = ", strB) ;
exchangeStr(strA,strB);
fmt.Println("==== after exchangeStr ==== ") ;
fmt.Println("strA = ", strA) ;
fmt.Println("strB = ", strB) ;
fmt.Println("strA = ", &strA) ;
fmt.Println("strB = ", &strB) ;
exchangeStr_point(&strA,&strB);
fmt.Println("==== after exchangeStr_point ==== ") ;
fmt.Println("strA = ", strA) ;
fmt.Println("strB = ", strB) ;
fmt.Println("==================================== ") ;
func exchangeStr(strA string,strB string){
var strTemp string;
strTemp=strA;
strA=strB;
strB=strTemp;
fmt.Println("=========inside exchangeStr=========")
fmt.Println("strA = ", strA) ;
fmt.Println("strB = ", strB) ;
}
func exchangeStr_point(strA *string, strB *string){
var strTemp string;
strTemp=*strA;
*strA=*strB;
*strB=strTemp;
fmt.Println("=========inside exchangeStr_point=========")
fmt.Println("strA = ", *strA) ;
fmt.Println("strB = ", *strB) ;
}
输出结果:
====================================
strA = strA
strB = strB
=========inside exchangeStr=========
strA = strB
strB = strA
==== after exchangeStr ====
strA = strA
strB = strB
strA = 0xc00001e070
strB = 0xc00001e080
=========inside exchangeStr_point=========
strA = strB
strB = strA
==== after exchangeStr_point ====
strA = strB
strB = strA
====================================
可以看到通过指针可以实现参数的值传递
数组
var array [5]int
var s string="hello";
array[0] = 10
array[1] = 20
array[2] = 30
array[3] = 40
array[4] = 50
fmt.Println("遍历array")
for i := 0; i < len(array); i++ {
fmt.Println(array[i])
}
fmt.Println("遍历string")
for i := 0;i<len(s);i++ {
//s[i]为bype类型,输出ASCII码
fmt.Println(s[i]);
fmt.Println(string(s[i]));
}
结果:
遍历array
10
20
30
40
50
遍历string
104
h
101
e
108
l
108
l
111
o
通过代码可以看到,string和数组很想,之后可以看一下两个类型的底层结构
结构体
package main
import "fmt"
type Person struct {
name string
age int
gender string
}
func main() {
// 创建一个 Person 结构体实例
p := Person{"John", 20, "male"}
// 访问结构体实例的字段
fmt.Println(p.name)
fmt.Println(p.age)
fmt.Println(p.gender)
// 修改结构体实例的字段
p.name = "Jane"
p.age = 21
p.gender = "female"
// 再次访问结构体实例的字段
fmt.Println(p.name)
fmt.Println(p.age)
fmt.Println(p.gender)
}
结果:
John
20
male
Jane
21
female
管道
// 创建一个整数类型的管道
ch := make(chan int)
// 启动一个发送数据的 goroutine
go func() {
ch <- 42 // 将数据 42 发送到管道
ch <- 43 // 将数据 43 发送到管道
}()
// go func() {
// ch <- 43 // 将数据 43 发送到管道
// }()
// 从管道中接收数据
value := <-ch
fmt.Println(value) // 输出 42
value = <-ch
fmt.Println(value) // 输出 43
日期
除了以上这些类型,一般我们常用的还有日期
可以发现,这里没有日期类型,Go Lang的日期被定义在系统函数里
import(
"fmt"
"time"
)
currentTime := time.Now();
fmt.Println(currentTime);
fmt.Printf("currentTime的类型 = %T", currentTime);
输出结果
2023-12-24 23:36:09.8925804 +0800 CST m=+0.005935301
currentTime的类型 = time.Time
其他数据类型在后续边摸索边使用
标签:Lang,
string,
fmt,
数据类型,
Println,
exchangeStr,
Go,
strB,
strA
From: https://www.cnblogs.com/terry841119/p/17933108.html