package main

import (
"bytes"
"fmt"
"reflect"
"strconv"
"strings"
) func testString() {
var tString string //对于golang, string没有nil概念, tString = nil 和 tString == nil 这两种写法不能通过编译
fmt.Println(tString == "") //true
fmt.Println(len(tString) == 0) //true
fmt.Printf("address=%p\n", &tString) tString = "hello,中国" //字符串是不可变的
fmt.Printf("tString len = %d\n", len(tString)) //结果为 12, go中string的底层实现是[]byte, 所以string的len是按照字符串的byte数组的长度计算的, 一个中文字符占3个byte
fmt.Printf("first byte = %c\n", tString[0]) //可以通过下标访问字节, 但不能修改
s := tString[0:] //这种操作要慎用, 每一次转换都需要复制内容, 并且切片(s)和原字符串(tString)所指向的底层字符数组是一个
fmt.Println(reflect.TypeOf(s)) //结果为string, 字符串的切片操作, 这里要注意返回的仍然是字符串, 而不是slice rString := []rune(tString) //如果想访问中文, 可以用rune类型
fmt.Printf("tString char 7 = %c\n", rString[7]) //国
fmt.Printf("tString char len = %d\n", len(rString)) //结果为 8
//byte实质上是uint8类型, rune实质上是uint32类型 //字符串拼接, 出于效率上的考虑, 如果是少量的拼接,使用哪种都可以, 但如果有大量的字符串拼接, 性能要求较高的场合, 那么选择选择合适的拼接方式就显得很重要
tString = "hello" + "," + "world" // 直接使用运算符 "+" 链接, 因为每次运算都会产生新的字符串,空间和gc不太友好, 优点在于简洁清晰
tString = fmt.Sprintf("%s%s%d", "hello ", "world", 5) //fmt格式化, 逻辑复杂, 几种拼接方式中, 效率基本是最低的, 优点可以格式化其他的类型
tString = strings.Join([]string{"hello", "world"}, ":") //strings拼接, 优点在 如果已有一个字符串数组效率很高, 但如果是重新构造的话, 代价也不小
buffer := bytes.Buffer{} //bytes.Buffer, 适用于大量的拼接,性能要求较高的场景
buffer.WriteString("hello")
buffer.WriteString("world")
fmt.Println(buffer.String())
fmt.Println(tString) //字符串的更多操作(截取, 分割, 比较, 索引, 前后缀等)strings
fmt.Println(strings.Contains(tString, "中")) //字符串与基础数据类型的转换在strconv包
iString := "5"
i, _ := strconv.Atoi(iString) //字符串转int
strconv.Itoa(i) //int转string
ui, _ := strconv.ParseInt(iString, 10, 8) //第一个参数是需要转换的字符串, 第二个是进制(二进制, 八进制...), 第三个是bit大小(int8,int16...) //ParseFloat, ParseUint, ParseBool分别是字符串转换浮点, uint, 布尔类型.
//基础类型转换成string有Format
strconv.FormatInt(ui, 10)
strconv.FormatBool(true)
//字符串操作的包是strings, 比较, 前后缀, 去空格, 切分, 大小写转换... } func main() { testString() }

golang 字符串与整数, 布尔转换 strconv的更多相关文章

  1. 编程练习------C/C++分别实现字符串与整数的转换

    C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...

  2. Leetcode8--->String to Integer(实现字符串到整数的转换)

    题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“    123   ” = 123: 2.   字符串“+123” = 123: 3.   字符串“-12 ...

  3. Golang 字符串操作--使用strings、strconv包

    strings包 package main import ( "fmt" "strings" ) func main() { //func Count(s, s ...

  4. python自动化--字符串和整数的转换,while的循环体

    字符串(str)和整数(int)类型变量的结合 *遵循只有同一类型的变量才可以结合. *不同类型的变量之间的转换 实例:实现打印出"192.168.100"和1的结合出" ...

  5. 不使用c的任何库函数 实现字符串到整数的转换 整数到字符串的转换

    转载请标明出处:http://www.cnblogs.com/NongSi-Net/p/6805844.html 今天主要总结下:完成编程: 1.除printf函数之外,不用任何c语言库函数,实现将字 ...

  6. 3.Python自我修炼(升仙中....整数,布尔值,字符串,for循环)

    python学习(整数,布尔值,字符串,for循环) 1.整数 ​ 在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.但是在python3中不存 ...

  7. python 字符串和整数,浮点型互相转换

    在编程当中,经常要用到字符串的互相转换, 现在记录 python 里面的字符串和整数是怎么转换的. int(str) 函数将 符合整数的规范的字符串 转换成 int 型. num2 = "1 ...

  8. LintCode-54.转换字符串到整数

    转换字符串到整数 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN( ...

  9. 用递归法将一个整数n转换成字符串。

    用递归法将一个整数n转换成字符串. 比如,输入483,应输出字符串"483".n的位数不确定,能够是随意位数的整数. #include "stdafx.h" # ...

随机推荐

  1. jQuery选择器详解及实例---《转载》

    选择器是jQuery最基础的东西,本文中列举的选择器基本上囊括了所有的jQuery选择器,也许各位通过这篇文章能够加深对jQuery选择器的理解,它们本身用法就非常简单,我更希望的是它能够提升个人编写 ...

  2. 在 Python 中使用 GDB 来调试 转载

    2013/11/01 | Comments 大约一年前,我接触了 Java 中的 Btrace 能够不停机查看线上 JVM 运行情况的特性让我艳羡不已. 另外还有强悍的 jStack 和 jConso ...

  3. SSIS 学习之旅 FTP文件传输-FTP任务

    这一章主要讲解一下FTP控件. 设计:   通过Demon库的Users表数据生成CSV文件.   生成后的CSV文件抛送到FTP指定目录下. 其他控件的使用这里就不做详细讲解了.大家如果有不懂得可以 ...

  4. 安装VM虚拟机提示 尝试创建目录 C:\Public\documents\SharedVirtual Machines 时发生错误解决方法

    把Windows Defender安全中心的“受控制文件夹的访问”给关闭了,然后就可以顺利安装上了. 作者:耑新新,发布于  博客园 转载请注明出处,欢迎邮件交流:zhuanxinxin@foxmai ...

  5. 15 链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点. p1先走k-1步,p1 p2再一起走 C++: /* struct ListNode { int val; struct ListNode *next; L ...

  6. 【转】AndroidStudio升到最新版本(3.1.2)之后

    AndroidStudio升到最新版本(3.1.2)之后   暂时发现的需要大家注意的地方 1.androidstudio3无法导入moudle? 例如:我写了一个简单的项目,需要导入一个第三方的mo ...

  7. 流程设计器jQuery + svg/vml(Demo7 - 设计器与引擎及表单一起应用例子)

    去年就完成了流程设计器及流程引擎的开发,本想着把流程设计器好好整理一下,形成一个一步一步的开发案例,结果才整理了一点点,发现写文章比写代码还累,加上有事情要忙,结果就.. 明天要去外包驻场了,现把流程 ...

  8. 【Codechef】Chef and Bike(二维多项式插值)

    something wrong with my new blog! I can't type matrixs so I come back. qwq 题目:https://www.codechef.c ...

  9. shell变量定义中的特殊符号

    今天要写一个shell语句来输出数据库的v$database的信息 定义bb为一个接收sql返回值的变量 需要注意的是: select * from v$database ;  语句 由于其中用到了$ ...

  10. 因为修改linux selinux修改错误产生的问题及解决办法

    会出现这个错误: not syncing attempted to kill init 解决办法是: 开机后一直按e 然后按这个修改: https://www.deep-silver.com/kern ...