基本数据类型转string类型:

方式1:fmt.Sprintf("%参数", 表达式) 【个人习惯这个,灵活】

函数的介绍:

  func Sprintf

    func Sprintf(format string, a ...interface{}) string
    Sprintf根据format参数生成格式化的字符串并返回该字符串

1)参数需要和表达式的数据类型相匹配
2)fmt.Sprintf().. 会返回转换后的字符串
3)案例演示
[root@node3 shangxuetang]# cat basictype2string.go
package main

import (
"fmt"
_ "unsafe"
)

//演示golang中基本数据练习转成string使用
func main() {

  var num1 int = 99
  var num2 float64 = 23.456
  var b bool = true
  var mychar byte = 'h'
  var str string //空的str

  //使用第一种方式来转换 fmt.Sprintf方法

  str = fmt.Sprintf("%d", num1)
  fmt.Printf("str type %T str=%q \n", str, str)

  str = fmt.Sprintf("%f", num2)
  fmt.Printf("str type %T str=%q \n", str, str)

  str = fmt.Sprintf("%t", b)
  fmt.Printf("str type %T str=%q \n", str, str)

  str = fmt.Sprintf("%c", mychar)
  fmt.Printf("str type %T str=%q \n", str, str)
}

输出的结果:

[root@node3 shangxuetang]# go run basictype2string.go
str type string str="99"
str type string str="23.456000"
str type string str="true"
str type string str="h"

方式2:使用strconv包的函数

函数介绍:
  func FormatBool(b bool) string

  func FormatFloat(f float64, fmt byte, prec, bitSize int) string

  func FormatInt(i int64, base int) string
  返回i的base进制的字符串表示。base必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。

  func FormatUint(i uint64, base int) string

案例说明:

[root@node3 shangxuetang]# cat basictype2string2.go
package main

import (
"fmt"
"strconv"
)

func main() {

  //第二种方式 strconv 函数
  var num3 int = 99
  var num4 float64 = 23.456
  var b2 bool = true
  var str string

  str = strconv.FormatInt(int64(num3), 10) //这里的10,表示转成10进制
  fmt.Printf("str type %T str=%q\n", str, str)

  //str = strconv.FormatFloat(num4, 'f', 10, 64)
  //说明:'f' 格式 10:表示小数位保留10位 64 :表示这个小数是float64
  str = strconv.FormatFloat(num4, 'f', 10, 64)
  fmt.Printf("str type %T str=%q\n", str, str)

  str = strconv.FormatBool(b2)
  fmt.Printf("str type %T str=%q\n", str, str)

}

[root@node3 shangxuetang]# go run basictype2string2.go
str type string str="99"
str type string str="23.4560000000"
str type string str="true"

  //stroconv包中有一个函数Itoa,只能转换int类型的
  //int类型转换string
  var num5 int = 4567
  str = strconv.Itoa(num5)
  fmt.Printf("str type %T str=%q\n", str, str)

  //int64类型是不能转换的,必须先转换成int以后才能转换成字符串
  var num6 = 4567
  str = strconv.Itoa(int(num6)) //先把int64转换成了int类型,然后在转换成string类型。
  fmt.Printf("str type %T str=%q\n", str, str)

string类型转换基本数据类型

1)使用strconv包的函数
  func ParseBool(str string) (value bool, err error)
  func ParseFloat(s string, bitSize int) (f float64, err error) //base int是选择几进制的,10进制的就写10就可以
  func ParseInt(s string, base int, bitSize int) (i int64, err error)
  func ParseUint(s string, b int, bigSize int) (n uint64, err error)

  note:因为返回的是int64 或者 float64,如果希望要得到int32,float32等如下处理。
  //如果希望将str-->int32的可以这样处理
  var num5 int32
  num5 = int32(num)

2) 案例演示
[root@node3 shangxuetang]# cat stringtobasictype.go
package main

import (
"fmt"
"strconv"
)

//演示golang中string类型转成基本数据类型
func main() {

  var str string = "true" //如果这里不是字符串true而是字符串hello的话,运行以后的结果就是false了。
  var b bool //如果这里把b = true的话,运行结果也还是false,说明这里就算是设定了类型也改不了上面的默认值。

  //说明
  //1. strconv.ParseBool(str) 函数会返回两个值(value bool, err error)
  //2. 因为我只想获取到 value bool, 不想获取 err 所以使用 _
  b, _ = strconv.ParseBool(str)
  fmt.Printf("b type %T b=%v\n", b, b)

  var str2 string = "1234590"
  var n1 int64
  var n2 int
  n1, _ = strconv.ParseInt(str2, 10, 64)
  n2 = int(n1)
  fmt.Printf("n1 type %T n1=%v\n", n1, n1)
  fmt.Printf("n1 type %T n2=%v\n", n2, n2)

  var str3 string = "123.456"
  var f1 float64
  f1, _ = strconv.ParseFloat(str3, 64)
  fmt.Printf("n1 type %T f1=%v\n", f1, f1)
}

[root@node3 shangxuetang]# go run stringtobasictype.go
b type bool b=true
n1 type int64 n1=1234590
n1 type int n2=1234590
n1 type float64 f1=123.456

注意事项:

  在将string类型转成基本数据类型时,要确保string类型能够转成有效的数据,比如我们可以把“123”,转成一个整数,但是不能把“hello” 转成一个整数,如果这样做,golang直接将其转成0。其他类型也是一样的道理,float =》0, bool=》false。

var str4 string = "hello"
var n3 int64 = 11
n3 , _ = strconv.ParseInt(str4, 10, 64)
fmt.Printf("n3 type %T n3=%v\n", n3, n3) //n3 = 0 //默认值

基本数据类型和string类型的转换的更多相关文章

  1. golang数据基本数据类型和string类型的转换

    基本类型之间的转换 golang在不同类型的变量之间赋值时需要显式转换,也就是说golang中数据类型不能自动转换. 表达式T(v)将值v转换为类型T 1.数据类型的转换可以是从范围小——>范围 ...

  2. Timestame类型和String 类型的转化

    Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-M ...

  3. php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断

    php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断 实际需求:把sphinx返回的结果放到ssdb缓存里,要考虑到sph ...

  4. DATETIME类型和BIGINT 类型互相转换

    项目中使用BIGINT来存放时间,以下代码用来转换时间类型和BIGINT类型 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ========= ...

  5. 基本数据类型和string的转换

  6. 数据库Date类型和JavaDate类型的转换

    问题:     java.lang.ClassCastException : java.util.Date cannot be cast to java.sql.Date 1.若是想将字符串装换成sq ...

  7. java类型和mysql类型的转换

    Integer  -----> int 11String     ----->  varchar 20Long       -----> bigint 20String      - ...

  8. Java Blob类型和String类型相互转换

    1.String 转 Blob: String content = "Hello World!"; Blob blob = Hibernate.createBlob(content ...

  9. MIME类型和Java类型

    MIME类型和Java类型 类型转换Spring Cloud Stream提供的开箱即用如下表所示:“源有效载荷”是指转换前的有效载荷,“目标有效载荷”是指转换后的“有效载荷”.类型转换可以在“生产者 ...

随机推荐

  1. DMA的认识

    DMA的简单了解与认识 DMA就是为了减轻CPU的负担来设置的存储方式.当从外设取到的数据就不需要经过内核操作,而是通过DMA直接把外设的数据放到内存SRAM中,这样就会减少CPU的负担,让CPU在此 ...

  2. emit写了个实体转换程序

    就我自己知道的,automapper是常用的,还是比较合适好用.不过我一般采用MVVM模式,其实就是简单的model名称不同而已,而这些转换器升级,扩展的很多,功能丰富,但是我用不到啊,又不能按照自己 ...

  3. iviewUI框架,使用table表格内render下拉框select被遮盖问题

    使用props:{  transfer:true },即可   1.原本代码:

  4. bzoj4182 Shopping 点分治+单调队列优化多重背包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4182 题解 有一个很直观的想法是设 \(dp[x][i]\) 表示在以 \(x\) 为根的子树 ...

  5. 前端每日实战:49# 视频演示如何用纯 CSS 创作一支诱人的冰棍

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/vrxzMw 可交互视频教程 此视频 ...

  6. vue tab切换布局

    页面 功能 点击tab1和tab2,content内容切换content1和content2 <template> <div> <div class="tab& ...

  7. poj 2186: Popular Cows(tarjan基础题)

    题目链接 tarjan参考博客 题意:求在图上可以被所有点到达的点的数量. 首先通过tarjan缩点,将所有内部两两可达的子图缩为一点,新图即为一个有向无环图(即DAG). 在这个DAG上,若存在不止 ...

  8. vue-葵花宝典

    router-view 中包含 router-view 这种情况就可以 使用嵌套路由了 变化的视图中包含变化的视图 代码层面 router-view 中 包含router-view 路由childre ...

  9. Activity(工作流-1)

    1.activity自带数据表的含义(23张表) (1)资源库流程规则表 1)act_re_deployment 部署信息表 2)act_re_model  流程设计模型部署表 3)act_re_pr ...

  10. 重磅干货免费下载!阿里云RDS团队论文被数据库顶会SIGMOD 2018收录

    ACM SIGMOD数据管理国际会议是由美国计算机协会(ACM) 数据管理专业委员会(SIGMOD)发起.在数据库领域具有最高学术地位的国际性学术会议. SIGMOD和另外两大数据库会议VLDB.IC ...