Go小白入门4 - 字符串 & 字典

本文介绍了Go语言中的字符串和字典。对于字符串,讲解了长度计算、不可变性以及如何使用`strings`和`strconv`包进行操作。字符串拼接最高效的方式是使用`+`。在字典部分,讨论了常见操作如赋值、判断存在、遍历和删除,以及如何对字典进行排序和存储函数作为值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 字符串

Go语言的%d,%p,%v等占位符

1.1 字符串的长度

  • Go的字符串是 UTF-8 字符的一个序列(ASCII 码表字符 - 占用 1 字节;其它字符 - 占 2~4 字节)=> 字节长度的不定性
  • len常规长度函数;utf8.RuneCountInString - 将所有字符长度记为1

例子 - 英文字符1字节,中文字符3字节

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
   
	s := "hello"
	fmt.Println(len(s)) // 5

	s = "hello你好"
	fmt.Println(len(s))                    // 11
	fmt.Println(utf8.RuneCountInString(s)) // 5
}

1.2 如何改变字符串的内容?

字符串是值类型 - 不可改变的

// 非法操作!
s := "hello"
s[0] = 'T'

想改变字符串的内容,可借助byte切片

// 字符串 -> 字节切片 -> 字符串
package main

import "fmt"

func main() {
   
	s := "hello"
	b := []byte(s)
	b[0] = 'T'
	s = string(b)
	fmt.Println(s)    // Tello
}

中文字节不是1,使用不能使用byte切片,否则会有奇怪的输出 => 要使用rune切片

package main

import "fmt"

func main() {
   
	s := "hello你好"

	// byte 切片 -> 奇怪的输出
	b := []byte(s)
	for i := 0; i < len(b); i++ {
   
		fmt
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值