Golang基础1-基本类型、if、switch、string

devtools/2024/11/13 10:15:07/

基本类型

bool

整数:byte(相当于uint8), rune(相当于int32), int/uint ,int8/uint8 ,int16/uint16 ,int32/uint32 ,int64/uint64

浮点数: float32 ,float64, complex64 ,complex128

array(值类型)、slice、map、chan(引用类型)

条件循环语句

if 、switch

if用法注意点

package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 10/* 使用 if 语句判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )}fmt.Printf("a 的值为 : %d\n", a)
}

switch用法注意点

Go 语言 switch 语句 | 菜鸟教程

switch简单demo
package mainimport "fmt"func main() {var grade string = "B"var marks int = 90switch marks {case 90:grade = "A"case 80:grade = "B"case 50, 60, 70:grade = "C"default:grade = "D"}switch {case grade == "A":fmt.Println("优秀")default:fmt.Println("懒得写了")}fmt.Println(grade)
}

switch判断interface的类型
package mainimport "fmt"func main() {var x interface{}x = "你好"switch i := x.(type) {case nil:fmt.Println("nil")case int:fmt.Printf("x is an integer: %d\n", i)case string:fmt.Printf("x is a string: %s\n", i)default:fmt.Println("x is of unknown type")}
}
fallthrough加在后面可以不加判断强制执行后面的case
package mainimport "fmt"func main() {switch {case false:fmt.Println("1、case 条件语句为 false")//fallthroughcase true:fmt.Println("2、case 条件语句为 true")fallthroughcase false:fmt.Println("3、case 条件语句为 false")fallthroughcase true:fmt.Println("4、case 条件语句为 true")//fallthroughcase true:fmt.Println("5、case 条件语句为 false")fallthroughdefault:fmt.Println("6、默认 case")}
}

string

string、rune、byte之间的关系

参考链接:https://www.cnblogs.com/cheyunhua/p/16007219.html

理解go中rune数据类型 - 知乎

首先查看官方包的定义

可以看出byte区分字节值和uint8,rune区分字符值和int32

// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
// used, by convention, to distinguish byte values from 8-bit unsigned
// integer values.
type byte = uint8// 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.
type rune = int32

UTF-8 是 Unicode 的一种实现方式,是一种针对 Unicode 可变长度的字符编码,它定义了字符串具体以何种方式存储在内存中。UFT-8 使用 1 ~ 4 为每个字符编码。

rune对应于int32,也就是这个unicode码点

byte对应于原始字节(8位所以0~255),也就是原始字节

go中的string类型采用UTF-8编码,这是一种可变长的 Unicode 字符编码方案,几乎可以表示世界任何字符。

统计字节数:len

统计Unicode字符数:utf8.RuneCountInString()

package mainimport ("fmt""unicode/utf8"
)func main() {a := "Go语言"fmt.Println("字节数:", len(a))//utf8计算unicode字符数fmt.Println("Unicode字符数:", utf8.RuneCountInString(a))fmt.Println("[]Rune:", len([]rune(a)))// 遍历字符串中的字符 char为rune类型fmt.Println("遍历字符串中的字符:")for _, char := range a {//测试当前rune类型fmt.Printf("%T %c\n", char, char)}fmt.Println()
}

字符串之间比较

Strings.Compare包返回-1,0,1分别< ,== ,>

常用其他方法

package mainimport ("fmt""strings"
)func main() {name := "go语言爱好者-l"//是否包含contain := strings.Contains(name, "爱好")fmt.Println(contain)//出现次数count := strings.Count(name, "g")fmt.Println(count)//以sep分割s := strings.Split(name, "-")fmt.Println(s)//前后缀goHead := strings.HasPrefix(name, "go语言")lEnd := strings.HasSuffix(name, "l")fmt.Println(goHead, lEnd)//查询字串出现位置,注意是byte的索引index := strings.Index(name, "爱好者") //8fmt.Println(index)//索引输出rune//for key, val := range name {//    fmt.Println(key, "--->", val)//}//索引输出byte,更细节,具体看当时文档 string rune byte之间的关系//for i := 0; i < len(name); i++ {//    fmt.Println(i, "-->", name[i])//}//索引到runeindexRune := strings.IndexRune(name, 35328)fmt.Println(indexRune)//替换,-1则替换所有fmt.Println(strings.Replace(name, "go", "java", -1))//大小写转换fmt.Println(strings.ToUpper("go"))fmt.Println(strings.ToLower("JAVA"))//去掉前后的符合,其他的用到了自己查询fmt.Println(strings.Trim(" 你好,啊 ", " "))
}

http://www.ppmy.cn/devtools/19333.html

相关文章

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下&#xff0c;年轻人社交不再局限于面对面&#xff0c;线上社交app已深入各大年轻人的手机中。相比于传统交友方式&#xff0c;线上社交app为用户提供了更加新奇的交友体验。同时&#xff0c;它还可以吸引更多的朋友&#xff0c;提高用户的整体交友体验…

c++ 智能指针 简单实现

1.需要设计 智能指针实现&#xff0c;目标用一个对象管理指针。 指针类:B 智能指针类A<T> A<B> a(new B); 用A来管理B的指针&#xff0c;如果有多个指针指向一个对象&#xff0c;那么都用A来承载这个指针 A<B> b(a); 这里需要一个拷贝构造函数&#xff0c;为…

嵌入式物联网实战开发笔记-乐鑫ESP32芯片功能对比以及功能选型【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ATvRnAZvxkev-PJfd3EAPg?pwd4e33 提取码&#xff1a;4e33 2.1 初识 ESP32 ESP32-S3 是一款低功耗的 MCU 系统级芯片 (SoC)&#xff0c;支持 2.4 GHz Wi-Fi 和低功耗蓝牙 (…

并并并并·病查坤

P1、什么是并查集 引用自百度百科&#xff1a; 并查集&#xff0c;在一些有N个元素的集合应用问题中&#xff0c;我们通常是在开始时让每个元素构成一个单元素的集合&#xff0c;然后按一定顺序将属于同一组的元素所在的集合合并&#xff0c;其间要反复查找一个元素在哪个集合…

go中标签创建与引用

go中tag维护方法 util项目&#xff1a; 0 util修改的代码提交 1 从gitlab上获取最新的tag https://git.****.com/peiyou_like_shuangshi_zhongtai/beibo_utils/tags 2 创建tag: git tag -a v1.101.11 -m "its的ggb查询" 3 tagpush&#xff1a;git push origin v1.10…

玄子Share-Shell编程之条件语句

玄子Share-Shell编程之条件语句 条件测试操作 test命令 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;否则返回其他数值 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] # 至少应有一个空格文件测试 [ 操作符 文件或目录 ][rootlocal…

状态模式:管理状态转换的策略

在软件设计中&#xff0c;某些对象在其生命周期内会有不同的状态&#xff0c;并且这些状态之间可以相互转换。状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许一个对象在其内部状态改变时改变其行为。这个模式将各种状态转移逻辑封装在独…

村庄集中式生活废水处理设备技术工艺

诸城市鑫淼环保小编带大家了解一下村庄集中式生活废水处理设备技术工艺 工艺&#xff1a; 生物接触氧化法指由浸没在污水中的填料和曝气系统构成的污水处理方法&#xff0c;在有氧条件下&#xff0c;污水与填料表面的生物膜广泛接触&#xff0c;使污水得到净化。填料指在污水处…