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. git —— 分支冲突

    解决冲突 冲突需手动解决 $ git status 查看冲突的文件 <<<<<<<,=======,>>>>>>> ...

  2. 监控SQLServer作业执行情况脚本

    SELECT [sJOB].[job_id] AS [作业ID] , [sJOB].[name] AS [作业名] , CASE WHEN [sJOBH].[run_date] IS NULL OR ...

  3. Python练手之爬虫

    很久没更新博客了,最近自学Python,写个在百度上爬算法题题解的爬虫,第一次写爬虫..纯当练手 慢慢来.. #coding:utf-8 ''' Created on 2016年11月22日 @aut ...

  4. MVC文件上传

    这次来看下一个MVC网站上传文件的功能,其中上传用到uploadify这个jquery插件,网上还有很多类似的,哪种都无所谓,能实现功能便行,貌似uploadify官网上的这个插件是要付费的,这里就顺 ...

  5. 修改web.config来开启Gzip压缩

    IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...

  6. 高仿360界面的实现(用纯XML和脚本实现)

    源码下载:360UI 本项目XML的桌面渲染依赖GQT开源项目(请感兴趣的朋友加入QQ讨论群:101189702,在群共享文件里下载GQT源码),以下是360界面实现的全部XML代码,所有的代码都在3 ...

  7. tensorflow初始化参数内存占满问题

    最近使用tensorflow构建了一个浅层的网络,初始化参数的时候发现两个1080ti 22G的显存马上占满 后来发现解决办法为:在创建session的时候把显存设置为自适应即可,如下 config ...

  8. 远程连接mysql root账号报错:2003-can't connect to MYSQL serve(转)

    远程连接mysql root账号报错:2003-can't connect to MYSQL serve 1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改roo ...

  9. [HDU - 5408] CRB and Farm

    题意: 给出一个由n个点组成的凸包,以及凸包内的k个点,问是否能够在凸包上选择最多2k个点构造一个新的 凸包,使得新的凸包覆盖原来的k个点. 要求2k个点覆盖原本的k个点,只要对原k个点构造凸包,然后 ...

  10. JSP九大内置对象简介

    1.out对象,是JspWriter类的实例,是向客户端输出内容常用的对象 方法: void println() 向客户端打印字符串 void clear() 清除缓冲区的内容,如果在flush之后调 ...