strings rock
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
package go_koans
|
||||
|
||||
var __string__ string = "impossibly lame value"
|
||||
var __int__ int = -1
|
||||
|
||||
func testArrays() {
|
||||
fruits := [4]string{"apple", "orange", "mango"}
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
package go_koans
|
||||
|
||||
var __ bool
|
||||
|
||||
func testBasics() {
|
||||
//assert(__ == true) // what is truth?
|
||||
assert(__bool__ == true) // what is truth?
|
||||
|
||||
//assert(!__ != true) // in it there is nothing false
|
||||
}
|
||||
|
||||
@@ -10,10 +10,14 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
var __string__ string = "impossibly lame value"
|
||||
var __int__ int = -1
|
||||
var __bool__ bool = false
|
||||
|
||||
func TestKoans(t *testing.T) {
|
||||
testBasics()
|
||||
//testBasics()
|
||||
testStrings()
|
||||
testArrays()
|
||||
//testArrays()
|
||||
|
||||
fmt.Printf("\n%c[32;1mYou won life. Good job.\n\n", 27)
|
||||
}
|
||||
|
||||
30
strings.go
30
strings.go
@@ -1,7 +1,31 @@
|
||||
package go_koans
|
||||
|
||||
func testStrings() {
|
||||
//var __ string
|
||||
import "fmt"
|
||||
|
||||
//assert("a" + __ == "abc")
|
||||
func testStrings() {
|
||||
assert("a" + "bc" == "abc") // string concatenation need not be difficult
|
||||
assert(len("abc") == 3) // and bounds are thoroughly checked at compile time
|
||||
|
||||
assert("abc"[0] == 'a') // their contents are reminiscent of C
|
||||
|
||||
assert("smith"[2:] == "ith") // slicing may omit the end point
|
||||
assert("smith"[:4] == "smit") // or the beginning
|
||||
assert("smith"[2:4] == "it") // or neither
|
||||
assert("smith"[:] == "smith") // or both
|
||||
|
||||
assert("smith" == "smith") // they can be compared directly
|
||||
assert("smith" > "foo") // and allow correct but generally useless comparisons
|
||||
assert("smith" < "zoo") // i suppose maybe this could be useful.. someday
|
||||
|
||||
bytes := []byte{'a', 'b', 'c'}
|
||||
assert(string(bytes) == "abc") // strings can be created from byte-slices
|
||||
|
||||
bytes[0] = 'z'
|
||||
assert(string(bytes) == "zbc") // byte-slices can be mutated, although strings cannot
|
||||
|
||||
assert(fmt.Sprintf("hello %s", "world") == "hello world") // our old friend sprintf returns
|
||||
assert(fmt.Sprintf("hello \"%s\"", "world") == "hello \"world\"") // quoting is familiar
|
||||
assert(fmt.Sprintf("hello %q", "world") == "hello \"world\"") // although it can be done easilier
|
||||
|
||||
assert(fmt.Sprintf("your balance: %d and %0.2f", 3, 4.5589) == "your balance: 3 and 4.56") // "the root of all evil" is actually a misquotation, by the way
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user