GO语言基本类型String和Slice,Map操作详解

目录
  • 本文大纲
  • 1、字符串String
    • String常用操作:获取长度和遍历
    • 字符串的strings包
    • 字符串的strconv包:
  • 2、切片Slice
  • 3、集合Map

本文大纲

本文继续学习GO语言基础知识点。

1、字符串String

String是Go语言的基本类型,在初始化后不能修改,Go字符串是一串固定长度的字符连接起来的字符序列,当然它也是一个字节的切片(Slice)。

import ("fmt")
func main() {
    name := "Hello World" //声明一个值为 Hello World的字符串变量 name
    fmt.Println(name)
}

String常用操作:获取长度和遍历

1、获取字符串长度:len()函数

str1 := "hello world"
fmt.Println(len(str1)) // 11

2、字符串遍历方式1:

str := "hello"
for i := 0; i < len(str); i++ {
	fmt.Println(i,str[i])
}

3、字符串遍历方式2:

str := "hello"
for i,ch := range str {
	fmt.Println(i,ch)
}

4、使用函数string()将其他类型转换为字符串

num := 12
fmt.Printf("%T \n", string(num)      // "12"  string

5、字符串拼接

str1 := "hello "
str2 := " world"
//创建字节缓冲
var stringBuilder strings.Builder
//把字符串写入缓冲
stringBuilder.WriteString(str1)
stringBuilder.WriteString(str2)
//将缓冲以字符串形式输出
fmt.Println(stringBuilder.String())

字符串的strings包

//查找s在字符串str中的索引
Index(str, s string) int
//判断str是否包含s
Contains(str, s string) bool
//通过字符串str连接切片 s
Join(s []string, str string) string
//替换字符串str中old字符串为new字符串,n表示替换的次数,小于0全部替换
Replace(str,old,new string,n int) string

字符串的strconv包:

用于与基本类型之间的转换,常用函数有Append、Format、Parse

  • Append 系列函数将整数等转换为字符串后,添加到现有的字节数组中
  • Format 系列函数把其他类型的转换为字符串
  • Parse 系列函数把字符串转换为其他类型

2、切片Slice

切片(slice)的作用是解决GO数组长度不能扩展的问题。是一种方便、灵活且强大的包装器。它本身没有任何数据,只是对现有数组的引用。

切片定义

var identifier []type

切片不需要说明长度, 或使用make()函数来创建切片:

var slice1 []type = make([]type, len)
也可以简写为
slice1 := make([]type, len)

示例

func main() {
   /* 创建切片 */
   numbers := []int{0,1,2,3,4,5,6,7,8}
   printSlice(numbers)
   /* 打印原始切片 */
   fmt.Println("numbers ==", numbers)
   /* 打印子切片从索引1(包含) 到索引4(不包含)*/
   fmt.Println("numbers[1:4] ==", numbers[1:4])
   /* 默认下限为 0*/
   fmt.Println("numbers[:3] ==", numbers[:3])
}
func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}
打印结果:
len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]
numbers == [0 1 2 3 4 5 6 7 8]
numbers[1:4] == [1 2 3]
numbers[:3] == [0 1 2]

3、集合Map

Map是Go语言的内置类型,将一个值与一个键关联起来,是一种无序的键值对的集合,可以使用相应的键检索值(类比Java中的Map来记)。

// 声明一个map类型,[]内的类型指任意可以进行比较的类型 int指值类型
m := map[string]int{"a":1,"b":2}
fmt.Print(m["a"])

示例:

func main() {
   var countryCapitalMap map[string]string
   /* 创建集合 */
   countryCapitalMap = make(map[string]string)
   /* map 插入 key-value 对,各个国家对应的首都 */
   countryCapitalMap["France"] = "Paris"
   countryCapitalMap["Italy"] = "Rome"
   countryCapitalMap["Japan"] = "Tokyo"
   countryCapitalMap["India"] = "New Delhi"
   /* 使用 key 输出 map 值 */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }

运行结果:

Capital of France is Paris
   Capital of Italy is Rome
   Capital of Japan is Tokyo
   Capital of India is New Delhi

以上就是GO语言基本类型String和Slice,Map操作详解的详细内容,更多关于GO基本类型String Slice Map的资料请关注我们其它相关文章!

(0)

相关推荐

  • 深入理解golang的基本类型排序与slice排序

    前言 其实golang的排序思路和C和C++有些差别. C默认是对数组进行排序, C++是对一个序列进行排序, Go则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个slice(分片, 类似于数组),或是包含 slice 的一个对象. 排序(接口)的三个要素: 1.待排序元素个数 n : 2.第 i 和第 j 个元素的比较函数 cmp : 3.第 i 和 第 j 个元素的交换 swap : 乍一看条件 3 是多余的, c 和 c++ 都不提供 swap . c 的 qsort 的用法:

  • Go结构体SliceHeader及StringHeader作用详解

    目录 引言 SliceHeader 疑问 坑 StringHeader 0 拷贝转换 总结 引言 在 Go 语言中总是有一些看上去奇奇怪怪的东西,咋一眼一看感觉很熟悉,但又不理解其在 Go 代码中的实际意义,面试官却爱问... 今天要给大家介绍的是 SliceHeader 和 StringHeader 结构体,了解清楚他到底是什么,又有什么用,并且会在最后给大家介绍 0 拷贝转换的内容. 一起愉快地开始吸鱼之路. SliceHeader SliceHeader 如其名,Slice + Heade

  • GO语言基本类型分析

    本文实例分析了GO语言基本类型.分享给大家供大家参考.具体如下: 一.整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有11种整形.如下: (1)int :依赖不同平台下的实现,可以是int32或int64 (2)int8 :  (-128->127) (3)int16: (-32768->32767) (4)int32: (-2 147 483 648->2 147 483 647) (5)int64 :(-9 223 372 036 854 77

  • Google Dart编程语法和基本类型学习教程

    1. 变量声明 如何定义变量 复制代码 代码如下: var name = 'Bob'; 变量的初始值 复制代码 代码如下: int lineCount;assert(lineCount == null); // Variables (even numbers) are initially null. 可以使用var,也可以直接指定类型.final, 定义为final的变量,值不能够被更改 复制代码 代码如下: final name = 'Bob'; // Or: final String nam

  • golang语言如何将interface转为int, string,slice,struct等类型

    在golang中,interface{}允许接纳任意值,int,string,struct,slice等,因此我可以很简单的将值传递到interface{},例如: package main import ( "fmt" ) type User struct{ Name string } func main() { any := User{ Name: "fidding", } test(any) any2 := "fidding" test(a

  • GO语言基本类型String和Slice,Map操作详解

    目录 本文大纲 1.字符串String String常用操作:获取长度和遍历 字符串的strings包 字符串的strconv包: 2.切片Slice 3.集合Map 本文大纲 本文继续学习GO语言基础知识点. 1.字符串String String是Go语言的基本类型,在初始化后不能修改,Go字符串是一串固定长度的字符连接起来的字符序列,当然它也是一个字节的切片(Slice). import ("fmt") func main() { name := "Hello World

  • Go语言学习之结构体和方法使用详解

    目录 1. 结构体别名定义 2. 工厂模式 3. Tag 原信息 4. 匿名字段 5. 方法 1. 结构体别名定义 变量别名定义 package main import "fmt" type integer int func main() { //类型别名定义 var i integer = 1000 fmt.Printf("值: %d, 类型: %T\n", i, i) var j int = 100 j = int(i) //j和i不属于同一类型,需要转换 fm

  • Struts2中ognl遍历数组,list和map方法详解

    一.简介 <s:iterator />可以遍历数据栈里面的任何数组,集合等等 在使用这个标签的时候有三个属性值得我们关注 1. value属性:可选的属性,value属性是指一个被迭代的集合,使用ognl表达式指定,如果为空的话默认就是ValueStack栈顶的集合. 2.id属性:可选属性, 是指集合元素的id 3.status属性:可选属性,该属性在迭代时会产生一个IteratorStatus对象,该对象可以判断当前元素的位置,包含了以下属性方法: int getCount(); 迭代元素

  • Go语言异步API设计的扇入扇出模式详解

    目录 前言 扇入/扇出服务 Go 语言实现扇入/扇出模式 前言 扇出/扇入模式是更高级 API 集成的主要内容.这些应用程序并不总是表现出相同的可用性或性能特征. 扇出是从电子工程中借用的一个术语,它描述了输入的逻辑门连接到另一个输出门的数量.输出需要提供足够的电流来驱动所有连接的输入.在事务处理系统中,用来描述为了服务一个输入请求而需要做的请求总数. 扇入是指为逻辑单元的输入方程提供输入信号的最大数量.扇入是定义单个逻辑门可以接受的最大数字输入数量的术语.大多数晶体管-晶体管逻辑 (TTL)

  • C语言实现手写JSON解析的方法详解

    目录 什么是JSON JSON支持的数据类型 JSON语法规则 JSON的解析 JSON基本语法 编写解析器 头文件 实现文件 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用来传输属性值或者序列性的值组成的数据对象. JSON是JavaScript的一个子集. 具有良好的可读性和便于快速编写的特性. JSON是独立于语言的文本格式,并且采用了类似C语言家族的一些习惯. JSON数据格式与语言无关,是目前网络中主流的数据传输格式之一,

  • TypeScript类型级别和值级别示例详解

    目录 对值级别编程类型级别编程区分 类型级编程 挑战是如何工作的 挑战 对值级别编程类型级别编程区分 首先,让我们对值级别编程和类型级别编程进行重要区分. 值级别编程让我们编写将在生产中运行的代码即运行期,并为我们的用户提供有用的东西. 类型级别编程帮助我们确保代码在发布之前即编译期不包含错误,在运行期会被完全删除 JavaScript没有类型,所以所有JavaScript都是值级别的代码: // A simple Javascript function: function sum(a, b)

  • C语言实现进制转换函数的实例详解

    C语言实现进制转换函数的实例详解 前言: 写一个二进制,八进制,十六进制转换为十进制的函数 要求: 函数有两个参数,参数(1)是要转换为十进制的进制数,参数(2)是标示参数(1)是什么进制(2,8,16标示二进制,八进制,十六进制). 要有报错信息,比如参数是1012,但参数(2)是2,显然是进制数表示有错误. 系统表 pg_proc 存储关于函数的信息 内部函数在编译之前需要先定义在 pg_proc.h 中,src/include/catalog/pg_proc.h CATALOG(pg_pr

  • Struts2 使用OGNL遍历map方法详解

    一.Action中的代码:MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.ActionSupport; import com.zx.demo.model.Product; import com.zx.d

  • oracle sql语言模糊查询--通配符like的使用教程详解

    oracle在Where子句中,可以对datetime.char.varchar字段类型的列用Like子句配合通配符选取那些"很像..."的数据记录,以下是可使用的通配符: %   零或者多个字符 _    单一任何字符(下划线) \     特殊字符 oracle10g以上支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,RE

  • C#中的char、string和StringBuilder的使用详解

    char 字符 char代表一个Unicode字符,它是System.Char的别名 char someChar = 'a';//定义了一个字符 char newLine= '\n';//这是一个换行符 System.Char定义了一组静态方法: ToUpper 将指定的字符转换为等效的大写形式 ToLower 将指定的字符转换为等效的小写形式 IsWhiteSpace 判断指定的字符是否为空白字符 -- 例子: Console.WriteLine(char.ToUpper('c'));//输出

随机推荐