Go语言字符串类型详解

news2025/6/4 10:24:15

1. 定义字符串类型

package main

import ("fmt");

func main() {

    var str1 string = "你好 GoLang 1"
    var str2 = "你好 GoLang 2"
    str3 := "你好 GoLang 3"

    fmt.Printf("%v--%T\n", str1, str1)
    // 你好 GoLang 1--string
    fmt.Printf("%v--%T\n", str2, str2)
    // 你好 GoLang 2--string
    fmt.Printf("%v--%T\n", str3, str3)
    // 你好 GoLang 1--string
}

2. 字符串转义符

package main

import ("fmt");

func main() {

    str1 := "this \n is string" 
    fmt.Println(str1)
    // this 
    //   is string

    str2 := "C:\\Go\\bin"
    fmt.Println(str2)
    // C:\Go\bin

}

3. 多行字符串

package main
import ("fmt");
func main() {
    str := `this is a
        this is b
        this is c
        this is d
        this is e
    `
    fmt.Println(str)

    // this is a        
    //     this is b
    //     this is c
    //     this is d
    //     this is e
}

4. 求字符串长度

package main

import ("fmt");

func main() {
    var str1 = "aaaa"
    fmt.Println(len(str1))
    // 4

    var str2 = "你好" 
    fmt.Println(len(str2))
    // 6
}

5. 拼接字符串

package main

import ("fmt");

func main() {

    str1 := "你好"
    str2 := "Golang"
    str3 := str1 + str2
    fmt.Println(str3)
    // 你好Golang

    str4 := "你好"
    str5 := "世界"
    str6 := fmt.Sprintf("%v %v", str4, str5)
    fmt.Println(str6)
    // 你好 世界


    str7 := "反引号间换行将被作为字符串中的换行," +
    	"文本将会原样输出," +
    	"但是所有的转义字符均无效"
    fmt.Println(str7)
    // 反引号间换行将被作为字符串中的换行,文本将会原样输出,但是所有的转义字符均无效

}

6. 字符串分割

package main
import ("fmt";"strings")
func main() {
    var str = "123-456-789"
    arr := strings.Split(str, "-")
    fmt.Println(arr)
    // [123 456 789] // 返回一个切片
}

7. 切片链接成字符串

package main

import ("fmt";"strings");

func main() {

    var str1 = "123-456-789"
    arr1 := strings.Split(str1, "-")
    str2 := strings.Join(arr1, "*")
    fmt.Println(str2) 
    // 123*456*789

    arr2 := []string{"php", "java", "golang"} 
    str3 := strings.Join(arr2, "-")
    fmt.Printf("%v - %T", str3, str3)
    // php-java-golang - string

}

8. 判断是否包含

package main

import ("fmt";"strings");

func main() {

    str1 := "this is str"

    str2 := "this"
    flag1 := strings.Contains(str1, str2)
    fmt.Println(flag1)
    // true 

    str3 := "thisxxx"
    flag2:= strings.Contains(str1, str3)
    fmt.Println(flag2)
    // false
    
}

9. 前缀/后缀判断

package main

import ("fmt";"strings");

func main() {

    str := "this is str"

    str1 := "this"
    flag1 := strings.HasPrefix(str, str1)
    fmt.Println(flag1)
    // true

    str2 := "str"
    flag2 := strings.HasSuffix(str, str2)
    fmt.Println(flag2)
    // true

}

10. 从前查找字符串位置

package main

import ("strings");

func main() {

    str := "this is str"

    str1 := "is"
    num1 := strings.Index(str, str1)
    println(num1) 
    // 2

    str2 := "xxx"
    num2 := strings.Index(str, str2)
    println(num2) 
    // -1 

}

11. 从后查找字符串位置

package main

import ("strings");

func main() {
    str1 := "this is str"
    str2 := "is"
    num := strings.LastIndex(str1, str2)
    println(num)  
    // 5
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长安链智能合约命令解析(全集)

创建命令解析 ./cmc client contract user create \ --contract-namefact \ --runtime-typeWASMER \ --byte-code-path./testdata/claim-wasm-demo/rust-fact-2.0.0.wasm \ --version1.0 \ --sdk-conf-path./testdata/sdk_config.yml \ --admin-key-file-paths./testdata/cryp…

一、OpenCV的基本操作

目录 1、OpenCV的模块 2、OpenCV的基础操作 2.1图像的IO操作 2.2绘制几何图形 2.3获取并修改图像中的像素点 2.4 获取图像的属性 2.5图像通道的拆分与合并 2.6色彩空间的改变 3、OpenCV的算数操作 3.1图像的加法 3.2图像的混合 3.3总结 1、OpenCV的模块 2、OpenCV的基…

裂缝仪在线监测装置:工程安全领域的“实时守卫者”

在基础设施运维领域,裂缝扩展是威胁建筑结构安全的核心隐患之一。传统人工巡检方式存在效率低、时效性差、数据主观性强等局限,而裂缝仪在线监测装置通过技术迭代,实现了对结构裂缝的自动化、持续性追踪,为工程安全评估提供科学依…

【论文精读】2024 ECCV--MGLD-VSR现实世界视频超分辨率(RealWorld VSR)

文章目录 一、摘要二、问题三、Method3.1 Latent Diffusion Model3.2 Motion-guided Diffusion Sampling3.3 Temporal-aware Decoder Fine-tuning 四、实验设置4.1 训练阶段4.2 训练数据 贡献总结 论文全称: Motion-Guided Latent Diffusion for Temporally Consis…

SpringBoot简单体验

1 Helloworld 打开:https://start.spring.io/ 选择maven配置。增加SpringWeb的依赖。 Generate之后解压,代码大致如下: hpDESKTOP-430500P:~/springboot2/demo$ tree ├── HELP.md ├── mvnw ├── mvnw.cmd ├── pom.xml └── s…

2025年通用 Linux 服务器操作系统该如何选择?

2025年通用 Linux 服务器操作系统该如何选择? 服务器操作系统的选择对一个企业IT和云服务影响很大,主推的操作系统在后期更换的成本很高,而且也有很大的迁移风险,所以企业在选择服务器操作系统时要尤为重视。 之前最流行的服务器…

Azure devops 系统之五-部署ASP.NET web app

今天介绍如何通过vscode 来创建一个asp.net web app,并部署到azure 上。 创建 ASP.NET Web 应用 在您的计算机上打开一个终端窗口并进入工作目录。使用 dotnet new webapp 命令创建一个新的 .NET Web 应用,然后将目录切换到新创建的应用。 dotnet new webapp -n MyFirstAzu…

学习路之PHP--easyswoole_panel安装使用

学习路之PHP--easyswoole_panel安装使用 一、新建文件夹二、安装三、改配置地址四、访问 IP:Port 自动进入index.html页面 一、新建文件夹 /www/wwwroot/easyswoole_panel 及配置ftp 解压easyswoole_panel源码 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

【拓扑排序】P6560 [SBCOI2020] 时光的流逝|普及+

本文涉及知识点 C图论 拓扑排序 P6560 [SBCOI2020] 时光的流逝 题目背景 时间一分一秒的过着,伴随着雪一同消融在了这个冬天, 或许,要是时光能停留在这一刻,该有多好啊。 … “这是…我在这个小镇的最后一个冬天了吧。” “嗯…

SSRF 接收器

接收请求 IP.php <?php // 定义日志文件路径 $logFile hackip.txt;// 处理删除请求 if (isset($_POST[delete])) {$ipToDelete $_POST[ip];$lines file($logFile, FILE_IGNORE_NEW_LINES);$newLines array();foreach ($lines as $line) {$parts explode( | , $line);…

FastAPI MCP 快速入门教程

目录 什么是 FastAPI MCP&#xff1f;项目设置1. 初始化项目2. 安装依赖3. 项目结构 编写代码创建主应用文件 运行和测试1. 启动服务器2. 使用 MCP Inspector 测试 什么是 FastAPI MCP&#xff1f; FastAPI MCP 是一个将 FastAPI 应用程序转换为 Model Context Protocol (MCP)…

uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标

如果应用是一个多 tab 应用&#xff0c;可以通过 tabBar 配置项指定一级导航栏&#xff0c;以及 tab 切换时显示的对应页。 在 pages.json 中提供 tabBar 配置&#xff0c;不仅仅是为了方便快速开发导航&#xff0c;更重要的是在App和小程序端提升性能。在这两个平台&#xff…

【Redis】基本命令

Redis命令行客户端 现在我们已经启动了Redis服务&#xff0c;下面将介绍如何使用redis - cli连接、操作Redis服务。客户端和服务端的交互过程如图1 - 3所示。 redis - cli可以使用两种方式连接Redis服务器。 第一种是交互式方式&#xff1a;通过redis - cli -h {host} -p {p…

哈希:闭散列的开放定址法

我还是曾经的那个少年 1.概念 通过其要存储的值与存储的位置建立映射关系。 如&#xff1a;基数排序也是运用了哈希开放定址法的的思想。 弊端&#xff1a;仅适用于数据集中的情况 2.开放定址法 问题&#xff1a;按照上述哈希的方式&#xff0c;向集合插入数据为44&#xff…

Unity-QFramework框架学习-MVC、Command、Event、Utility、System、BindableProperty

QFramework QFramework简介 QFramework是一套渐进式、快速开发框架&#xff0c;适用于任何类型的游戏及应用项目&#xff0c;它包含一套开发架构和大量的工具集 QFramework的特性 简洁性&#xff1a;QFramework 强调代码的简洁性和易用性&#xff0c;让开发者能够快速上手&a…

FPGA实现CNN卷积层:高效窗口生成模块设计与验证

我最近在从事一项很有意思的项目&#xff0c;我想在PFGA上部署CNN并实现手写图片的识别。而本篇文章&#xff0c;是我迈出的第一步。具体代码已发布在github上 模块介绍 卷积神经网络&#xff08;CNN)可以分为卷积层、池化层、激活层、全链接层结构&#xff0c;本篇要实现的&…

LeetCode 3068.最大节点价值之和:脑筋急转弯+动态规划(O(1)空间)

【LetMeFly】3068.最大节点价值之和&#xff1a;脑筋急转弯动态规划&#xff08;O(1)空间&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-the-maximum-sum-of-node-values/ 给你一棵 n 个节点的 无向 树&#xff0c;节点从 0 到 n - 1 编号。树以长…

BLIP-2

目录 摘要 Abstract BLIP-2 模型框架 预训练策略 模型优势 应用场景 实验 代码 总结 摘要 BLIP-2 是一种基于冻结的图像编码器和大型语言模型的高效视觉语言预训练模型&#xff0c;由 Salesforce 研究团队提出。它在 BLIP 的基础上进一步优化&#xff0c;通过轻量级…

支持向量机(SVM)例题

对于图中所示的线性可分的20个样本数据&#xff0c;利用支持向量机进行预测分类&#xff0c;有三个支持向量 A ( 0 , 2 ) A\left(0, 2\right) A(0,2)、 B ( 2 , 0 ) B\left(2, 0\right) B(2,0) 和 C ( − 1 , − 1 ) C\left(-1, -1\right) C(−1,−1)。 求支持向量机分类器的线…

SQL中各个子句的执行顺序

select、from、 join、where、order by、group by、having、limit 解释 1) FROM (确定数据源) 查询的执行首先从FROM子句开始&#xff0c;确定数据的来源(表、视图、连接等)。 2) JOIN (如果有JOIN操作) 在FROM子句之后&#xff0c;SQL引擎会执行连接操作(JOIN)&#xff0c…