Black Lives Matter. Support the Equal Justice Initiative.

Source file src/strconv/example_test.go

Documentation: strconv

     1  // Copyright 2015 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package strconv_test
     6  
     7  import (
     8  	"fmt"
     9  	"log"
    10  	"strconv"
    11  )
    12  
    13  func ExampleAppendBool() {
    14  	b := []byte("bool:")
    15  	b = strconv.AppendBool(b, true)
    16  	fmt.Println(string(b))
    17  
    18  	// Output:
    19  	// bool:true
    20  }
    21  
    22  func ExampleAppendFloat() {
    23  	b32 := []byte("float32:")
    24  	b32 = strconv.AppendFloat(b32, 3.1415926535, 'E', -1, 32)
    25  	fmt.Println(string(b32))
    26  
    27  	b64 := []byte("float64:")
    28  	b64 = strconv.AppendFloat(b64, 3.1415926535, 'E', -1, 64)
    29  	fmt.Println(string(b64))
    30  
    31  	// Output:
    32  	// float32:3.1415927E+00
    33  	// float64:3.1415926535E+00
    34  }
    35  
    36  func ExampleAppendInt() {
    37  	b10 := []byte("int (base 10):")
    38  	b10 = strconv.AppendInt(b10, -42, 10)
    39  	fmt.Println(string(b10))
    40  
    41  	b16 := []byte("int (base 16):")
    42  	b16 = strconv.AppendInt(b16, -42, 16)
    43  	fmt.Println(string(b16))
    44  
    45  	// Output:
    46  	// int (base 10):-42
    47  	// int (base 16):-2a
    48  }
    49  
    50  func ExampleAppendQuote() {
    51  	b := []byte("quote:")
    52  	b = strconv.AppendQuote(b, `"Fran & Freddie's Diner"`)
    53  	fmt.Println(string(b))
    54  
    55  	// Output:
    56  	// quote:"\"Fran & Freddie's Diner\""
    57  }
    58  
    59  func ExampleAppendQuoteRune() {
    60  	b := []byte("rune:")
    61  	b = strconv.AppendQuoteRune(b, '☺')
    62  	fmt.Println(string(b))
    63  
    64  	// Output:
    65  	// rune:'☺'
    66  }
    67  
    68  func ExampleAppendQuoteRuneToASCII() {
    69  	b := []byte("rune (ascii):")
    70  	b = strconv.AppendQuoteRuneToASCII(b, '☺')
    71  	fmt.Println(string(b))
    72  
    73  	// Output:
    74  	// rune (ascii):'\u263a'
    75  }
    76  
    77  func ExampleAppendQuoteToASCII() {
    78  	b := []byte("quote (ascii):")
    79  	b = strconv.AppendQuoteToASCII(b, `"Fran & Freddie's Diner"`)
    80  	fmt.Println(string(b))
    81  
    82  	// Output:
    83  	// quote (ascii):"\"Fran & Freddie's Diner\""
    84  }
    85  
    86  func ExampleAppendUint() {
    87  	b10 := []byte("uint (base 10):")
    88  	b10 = strconv.AppendUint(b10, 42, 10)
    89  	fmt.Println(string(b10))
    90  
    91  	b16 := []byte("uint (base 16):")
    92  	b16 = strconv.AppendUint(b16, 42, 16)
    93  	fmt.Println(string(b16))
    94  
    95  	// Output:
    96  	// uint (base 10):42
    97  	// uint (base 16):2a
    98  }
    99  
   100  func ExampleAtoi() {
   101  	v := "10"
   102  	if s, err := strconv.Atoi(v); err == nil {
   103  		fmt.Printf("%T, %v", s, s)
   104  	}
   105  
   106  	// Output:
   107  	// int, 10
   108  }
   109  
   110  func ExampleCanBackquote() {
   111  	fmt.Println(strconv.CanBackquote("Fran & Freddie's Diner ☺"))
   112  	fmt.Println(strconv.CanBackquote("`can't backquote this`"))
   113  
   114  	// Output:
   115  	// true
   116  	// false
   117  }
   118  
   119  func ExampleFormatBool() {
   120  	v := true
   121  	s := strconv.FormatBool(v)
   122  	fmt.Printf("%T, %v\n", s, s)
   123  
   124  	// Output:
   125  	// string, true
   126  }
   127  
   128  func ExampleFormatFloat() {
   129  	v := 3.1415926535
   130  
   131  	s32 := strconv.FormatFloat(v, 'E', -1, 32)
   132  	fmt.Printf("%T, %v\n", s32, s32)
   133  
   134  	s64 := strconv.FormatFloat(v, 'E', -1, 64)
   135  	fmt.Printf("%T, %v\n", s64, s64)
   136  
   137  	// Output:
   138  	// string, 3.1415927E+00
   139  	// string, 3.1415926535E+00
   140  }
   141  
   142  func ExampleFormatInt() {
   143  	v := int64(-42)
   144  
   145  	s10 := strconv.FormatInt(v, 10)
   146  	fmt.Printf("%T, %v\n", s10, s10)
   147  
   148  	s16 := strconv.FormatInt(v, 16)
   149  	fmt.Printf("%T, %v\n", s16, s16)
   150  
   151  	// Output:
   152  	// string, -42
   153  	// string, -2a
   154  }
   155  
   156  func ExampleFormatUint() {
   157  	v := uint64(42)
   158  
   159  	s10 := strconv.FormatUint(v, 10)
   160  	fmt.Printf("%T, %v\n", s10, s10)
   161  
   162  	s16 := strconv.FormatUint(v, 16)
   163  	fmt.Printf("%T, %v\n", s16, s16)
   164  
   165  	// Output:
   166  	// string, 42
   167  	// string, 2a
   168  }
   169  
   170  func ExampleIsGraphic() {
   171  	shamrock := strconv.IsGraphic('☘')
   172  	fmt.Println(shamrock)
   173  
   174  	a := strconv.IsGraphic('a')
   175  	fmt.Println(a)
   176  
   177  	bel := strconv.IsGraphic('\007')
   178  	fmt.Println(bel)
   179  
   180  	// Output:
   181  	// true
   182  	// true
   183  	// false
   184  }
   185  
   186  func ExampleIsPrint() {
   187  	c := strconv.IsPrint('\u263a')
   188  	fmt.Println(c)
   189  
   190  	bel := strconv.IsPrint('\007')
   191  	fmt.Println(bel)
   192  
   193  	// Output:
   194  	// true
   195  	// false
   196  }
   197  
   198  func ExampleItoa() {
   199  	i := 10
   200  	s := strconv.Itoa(i)
   201  	fmt.Printf("%T, %v\n", s, s)
   202  
   203  	// Output:
   204  	// string, 10
   205  }
   206  
   207  func ExampleParseBool() {
   208  	v := "true"
   209  	if s, err := strconv.ParseBool(v); err == nil {
   210  		fmt.Printf("%T, %v\n", s, s)
   211  	}
   212  
   213  	// Output:
   214  	// bool, true
   215  }
   216  
   217  func ExampleParseFloat() {
   218  	v := "3.1415926535"
   219  	if s, err := strconv.ParseFloat(v, 32); err == nil {
   220  		fmt.Printf("%T, %v\n", s, s)
   221  	}
   222  	if s, err := strconv.ParseFloat(v, 64); err == nil {
   223  		fmt.Printf("%T, %v\n", s, s)
   224  	}
   225  	if s, err := strconv.ParseFloat("NaN", 32); err == nil {
   226  		fmt.Printf("%T, %v\n", s, s)
   227  	}
   228  	// ParseFloat is case insensitive
   229  	if s, err := strconv.ParseFloat("nan", 32); err == nil {
   230  		fmt.Printf("%T, %v\n", s, s)
   231  	}
   232  	if s, err := strconv.ParseFloat("inf", 32); err == nil {
   233  		fmt.Printf("%T, %v\n", s, s)
   234  	}
   235  	if s, err := strconv.ParseFloat("+Inf", 32); err == nil {
   236  		fmt.Printf("%T, %v\n", s, s)
   237  	}
   238  	if s, err := strconv.ParseFloat("-Inf", 32); err == nil {
   239  		fmt.Printf("%T, %v\n", s, s)
   240  	}
   241  	if s, err := strconv.ParseFloat("-0", 32); err == nil {
   242  		fmt.Printf("%T, %v\n", s, s)
   243  	}
   244  	if s, err := strconv.ParseFloat("+0", 32); err == nil {
   245  		fmt.Printf("%T, %v\n", s, s)
   246  	}
   247  
   248  	// Output:
   249  	// float64, 3.1415927410125732
   250  	// float64, 3.1415926535
   251  	// float64, NaN
   252  	// float64, NaN
   253  	// float64, +Inf
   254  	// float64, +Inf
   255  	// float64, -Inf
   256  	// float64, -0
   257  	// float64, 0
   258  }
   259  
   260  func ExampleParseInt() {
   261  	v32 := "-354634382"
   262  	if s, err := strconv.ParseInt(v32, 10, 32); err == nil {
   263  		fmt.Printf("%T, %v\n", s, s)
   264  	}
   265  	if s, err := strconv.ParseInt(v32, 16, 32); err == nil {
   266  		fmt.Printf("%T, %v\n", s, s)
   267  	}
   268  
   269  	v64 := "-3546343826724305832"
   270  	if s, err := strconv.ParseInt(v64, 10, 64); err == nil {
   271  		fmt.Printf("%T, %v\n", s, s)
   272  	}
   273  	if s, err := strconv.ParseInt(v64, 16, 64); err == nil {
   274  		fmt.Printf("%T, %v\n", s, s)
   275  	}
   276  
   277  	// Output:
   278  	// int64, -354634382
   279  	// int64, -3546343826724305832
   280  }
   281  
   282  func ExampleParseUint() {
   283  	v := "42"
   284  	if s, err := strconv.ParseUint(v, 10, 32); err == nil {
   285  		fmt.Printf("%T, %v\n", s, s)
   286  	}
   287  	if s, err := strconv.ParseUint(v, 10, 64); err == nil {
   288  		fmt.Printf("%T, %v\n", s, s)
   289  	}
   290  
   291  	// Output:
   292  	// uint64, 42
   293  	// uint64, 42
   294  }
   295  
   296  func ExampleQuote() {
   297  	// This string literal contains a tab character.
   298  	s := strconv.Quote(`"Fran & Freddie's Diner	☺"`)
   299  	fmt.Println(s)
   300  
   301  	// Output:
   302  	// "\"Fran & Freddie's Diner\t☺\""
   303  }
   304  
   305  func ExampleQuoteRune() {
   306  	s := strconv.QuoteRune('☺')
   307  	fmt.Println(s)
   308  
   309  	// Output:
   310  	// '☺'
   311  }
   312  
   313  func ExampleQuoteRuneToASCII() {
   314  	s := strconv.QuoteRuneToASCII('☺')
   315  	fmt.Println(s)
   316  
   317  	// Output:
   318  	// '\u263a'
   319  }
   320  
   321  func ExampleQuoteRuneToGraphic() {
   322  	s := strconv.QuoteRuneToGraphic('☺')
   323  	fmt.Println(s)
   324  
   325  	s = strconv.QuoteRuneToGraphic('\u263a')
   326  	fmt.Println(s)
   327  
   328  	s = strconv.QuoteRuneToGraphic('\u000a')
   329  	fmt.Println(s)
   330  
   331  	s = strconv.QuoteRuneToGraphic('	') // tab character
   332  	fmt.Println(s)
   333  
   334  	// Output:
   335  	// '☺'
   336  	// '☺'
   337  	// '\n'
   338  	// '\t'
   339  }
   340  
   341  func ExampleQuoteToASCII() {
   342  	// This string literal contains a tab character.
   343  	s := strconv.QuoteToASCII(`"Fran & Freddie's Diner	☺"`)
   344  	fmt.Println(s)
   345  
   346  	// Output:
   347  	// "\"Fran & Freddie's Diner\t\u263a\""
   348  }
   349  
   350  func ExampleQuoteToGraphic() {
   351  	s := strconv.QuoteToGraphic("☺")
   352  	fmt.Println(s)
   353  
   354  	// This string literal contains a tab character.
   355  	s = strconv.QuoteToGraphic("This is a \u263a	\u000a")
   356  	fmt.Println(s)
   357  
   358  	s = strconv.QuoteToGraphic(`" This is a ☺ \n "`)
   359  	fmt.Println(s)
   360  
   361  	// Output:
   362  	// "☺"
   363  	// "This is a ☺\t\n"
   364  	// "\" This is a ☺ \\n \""
   365  }
   366  
   367  func ExampleUnquote() {
   368  	s, err := strconv.Unquote("You can't unquote a string without quotes")
   369  	fmt.Printf("%q, %v\n", s, err)
   370  	s, err = strconv.Unquote("\"The string must be either double-quoted\"")
   371  	fmt.Printf("%q, %v\n", s, err)
   372  	s, err = strconv.Unquote("`or backquoted.`")
   373  	fmt.Printf("%q, %v\n", s, err)
   374  	s, err = strconv.Unquote("'\u263a'") // single character only allowed in single quotes
   375  	fmt.Printf("%q, %v\n", s, err)
   376  	s, err = strconv.Unquote("'\u2639\u2639'")
   377  	fmt.Printf("%q, %v\n", s, err)
   378  
   379  	// Output:
   380  	// "", invalid syntax
   381  	// "The string must be either double-quoted", <nil>
   382  	// "or backquoted.", <nil>
   383  	// "☺", <nil>
   384  	// "", invalid syntax
   385  }
   386  
   387  func ExampleUnquoteChar() {
   388  	v, mb, t, err := strconv.UnquoteChar(`\"Fran & Freddie's Diner\"`, '"')
   389  	if err != nil {
   390  		log.Fatal(err)
   391  	}
   392  
   393  	fmt.Println("value:", string(v))
   394  	fmt.Println("multibyte:", mb)
   395  	fmt.Println("tail:", t)
   396  
   397  	// Output:
   398  	// value: "
   399  	// multibyte: false
   400  	// tail: Fran & Freddie's Diner\"
   401  }
   402  
   403  func ExampleNumError() {
   404  	str := "Not a number"
   405  	if _, err := strconv.ParseFloat(str, 64); err != nil {
   406  		e := err.(*strconv.NumError)
   407  		fmt.Println("Func:", e.Func)
   408  		fmt.Println("Num:", e.Num)
   409  		fmt.Println("Err:", e.Err)
   410  		fmt.Println(err)
   411  	}
   412  
   413  	// Output:
   414  	// Func: ParseFloat
   415  	// Num: Not a number
   416  	// Err: invalid syntax
   417  	// strconv.ParseFloat: parsing "Not a number": invalid syntax
   418  }
   419  

View as plain text