我期待澄清爲什麼這兩個strings.Contains()調用的行爲不同。cmd行參數字符串。包含行爲不同於硬編碼參數
package main
import (
"strings"
"os"
"errors"
"fmt"
)
func main() {
hardcoded := "col1,col2,col3\nval1,val2,val3"
if strings.Contains(hardcoded, "\n") == false {
panic(errors.New("The hardcoded string should contain a new line"))
}
fmt.Println("New line found in hardcoded string")
if len(os.Args) == 2 {
fmt.Println("parameter:", os.Args[1])
if strings.Contains(os.Args[1], "\n") == false {
panic(errors.New("The parameter string should contain a new line."))
}
fmt.Println("New line found in parameter string")
}
}
如果我跑這跟
go run input-tester.go col1,col2,col3\\nval1,val2,val3
我得到以下
New line found in hardcoded string
parameter: col1,col2,col3\nval1,val2,val3
panic: The parameter string should contain a new line.
goroutine 1 [running]:
panic(0x497100, 0xc42000e310)
/usr/local/go/src/runtime/panic.go:500 +0x1a1
main.main()
/home/user/Desktop/input-tester.go:21 +0x343
exit status 2
我可以看到字符串打印出來是相同的格式字符串時卻把硬編碼string.Contains()沒有找到「\ n」。
我猜這是我的一個疏忽。任何人都可以解釋我失蹤或誤解?
它的工作原理,如果我們使用'\ n'的命令行參數 – Priyanka
哦,親愛的 - 似乎以前的受訪者刪除他們的評論,然後downvoted這個問題,然後訪問我的個人資料和downvoted我以前所有的問題:d可憐的約翰 – Airomega