云边日落 潮平两岸阔,风正一帆悬。 (唐·王湾·次北固山下)
歌曲封面 未知作品
  • 歌曲封面“魔女の宅急便”~ルージュの伝言松任谷由実

渝ICP备2021002886号-1

渝公网安备50022502000591号

网站已运行 3 年 330 天 22 小时 16 分

Powered by Typecho & Sunny

3 online · 40 ms

Title

Golang的学习

Dan.

·

Article
⚠️ 本文最后更新于2021年07月15日,已经过了1037天没有更新,若内容或图片失效,请留言反馈

{mtitle title="Go数据类型的转换"/}
{dotted startColor="#ff6c6c" endColor="#e019fa"/}

string转基本类型

基本介绍:
字符串就是一串固定长度的字符连接起来的字符序列,Go的字符是由单个字节链接起来的,Go语言的字符串的字节使用UTF-8编码Unicode文本

注意事项:
  • Go语言的字符串的字节使用UTF-8编码表示Unicode文本,这样Golang统一Golang使用UTF-8编码问题不会在困扰程序员
  • 字符串一旦赋值了就不能修改了:在Go的字符是可以更改的

    案例:
    kr4vg9zy.png
    字符串的两种表达形式
    kr4vjvxx.png
    字符串的拼接方式
    kr4vlacs.png
案例:
♾️ go 代码:
package main
import (
    "fmt"
    "strconv"//用到的包
)
func main() {
    var str string = "true"
    var b bool
    b , _ = strconv.ParseBool(str)//    b , _ = strconv.ParseBool(str):strconv.ParseBool(str)函数会返回两个值(value bool, err error
    //因为只想获取到 value bool ,不想获取err所以我使用 _忽略  
    fmt.Printf("b type %T b=%v", b, b)
    var str2 string = "1234590"
    var n1 int64 
    var n2 int
    n1, _ = strconv.ParseInt(str2,10,64)
    n2 = int(n1)
    fmt.Printf("n1 type %T n1=%v\n",n1,n1)
    fmt.Printf("n2 type %T n2=%v\n",n2,n2)

    var str3 string = "123.456"
    var f1 float64
    f1, _ = strconv.ParseFloat(str3, 64)
    fmt.Printf("f1 type %T f1=%v\n", f1, f1)
}

运行结果:
kr4bgu4m.png

注意事项:

在将string类型转成基本数据类型时,要确保string 类型能够转成有成效的数据类型,比如“123”可以转换成一个整数,但是不能吧“hello”转成一个整数,如果这样做,Golang直接将其转换成0,其他类型也是如此。eg:float=>0 bool =>false
案例:

♾️ go 代码:
    var str4 string = "hello"
    var n3 int64  =11
    n3, _ = strconv.ParseInt(str4, 10,64)
    fmt.Printf("n3 type %T n3=%v\n", n3, n3)

运行结果:
kr4bgblf.png

基本数据类型和string 的转换

方式一:
fmt.Printf("%参数",表达式)

1、参数需要和表达式的数据类型相匹配
2、 fmt.Sprintf() 会返回转换后的字符串
方式二:
使用strconv包的函数
string类型转基本数据类型

♾️ go 代码:
func ParseBool(str string)(value bool, err error)//转Bool型
func ParseFloat(s string, bitSize int)(f, float64, err error)//转Float型
func ParseInt(s string,base int, bitSize int)(i int64, err error)//转Int型
func ParseUint(s string, b  int ,   bitSize int)(n Uint64, err error)//转Uint型

★ 案例:

♾️ go 代码:
package main
import (
    "fmt"
    "strconv"
)
//演示golang中string转成的基本数据类型
func main()  {
    var str string = "true"
    var b bool
    b , _ = strconv.ParseBool(str)//    b , _ = strconv.ParseBool(str):strconv.ParseBool(str)函数会返回两个值(value bool, err error
    //因为只想获取到 value bool ,不想获取err所以我使用 _忽略
    fmt.Printf("b type %T b=%v", b, b)
    var str2 string = "1234590"
    var n1 int64 
    var n2 int
    n1, _ = strconv.ParseInt(str2,10,64)
    n2 = int(n1)
    fmt.Printf("n1 type %T n1=%v\n",n1,n1)
    fmt.Printf("n2 type %T n2=%v\n",n2,n2)

    var str3 string = "123.456"
    var f1 float64
    f1, _ = strconv.ParseFloat(str3, 64)
    fmt.Printf("f1 type %T f1=%v\n", f1, f1)
    var str4 string = "hello"
    var n3 int64  =11
    n3, _ = strconv.ParseInt(str4, 10,64)
    fmt.Printf("n3 type %T n3=%v\n", n3, n3)
}

{dotted startColor="#ff6c6c" endColor="#f719fa"/}

指针
基本介绍
  • 基本数据类型,变量存的就是值,也叫值类型
  • 获取变量的地址,用&,比如: var num int,获取num的地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num
案例
♾️ go 代码:
package main
import (
    "fmt"
)
func main()  {
    //基本数据类型在内存布局
    var i int = 10
    fmt.Println("i的地址=", &i)
}
kr4oqwtf.png
  • 指针类型,变量存的是一个地址所指向的值,使用:,比如:var *ptr int,使用 ptr获取指向的值
案例:
♾️ go 代码:
package main
import (
    "fmt"
)
func main()  {
    //基本数据类型在内存布局
    var i int = 10
    fmt.Println("i的地址=", &i)
    var ptr *int = &i//解释:ptr是一个指针变量,是指向intd的一个指针,ptr本身的值是&i
    fmt.Printf("ptr=%v\n",ptr)
    fmt.Printf("ptr d的地址=%v\n", ptr)
    fmt.Printf("ptr 的地址=%v\n", *ptr)
}

运行结果:
kr4unftd.png

  • 举例说明:

    ♾️ go 代码:
    var num int = 1
    var i = 999
    var ptr *int = &i

    运行结果:
    kr4uq97k.png

现在已有 0 条评论,0 人点赞
Comment
发表
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主