diff --git a/core/api.go b/core/api.go
index 0f4b6f9..2636bc5 100644
--- a/core/api.go
+++ b/core/api.go
@@ -22,8 +22,8 @@
 	return GetVersion()
 }
 
-// NewProduer create a new producer with config
-func NewProduer(config *ProducerConfig) Producer {
+// NewProducer create a new producer with config
+func NewProducer(config *ProducerConfig) Producer {
 	return newDefaultProducer(config)
 }
 
@@ -56,7 +56,7 @@
 	return newPushConsumer(config)
 }
 
-// ConsumerConfig define a new conusmer.
+// ConsumerConfig define a new consumer.
 type ConsumerConfig struct {
 	GroupID             string
 	NameServer          string
diff --git a/core/queue_selector_test.go b/core/queue_selector_test.go
index 06743b4..e9a68ee 100644
--- a/core/queue_selector_test.go
+++ b/core/queue_selector_test.go
@@ -19,7 +19,7 @@
 	return m.selectRet
 }
 
-func TestWraper(t *testing.T) {
+func TestWrapper(t *testing.T) {
 	s := &mockMessageQueueSelector{selectRet: 2}
 	w := &messageQueueSelectorWrapper{selector: s, m: &Message{}, arg: 3}
 
diff --git a/core/version.go b/core/version.go
index 2466671..5700714 100644
--- a/core/version.go
+++ b/core/version.go
@@ -16,7 +16,7 @@
  */
 package rocketmq
 
-var GO_CLIENT_VERSION = "Go Client V1.0.0, BuildTime:2018.10.30"
+const GO_CLIENT_VERSION = "Go Client V1.0.0, BuildTime:2018.10.30"
 
 func GetVersion() (version string) {
 	return GO_CLIENT_VERSION
diff --git a/doc/Introduction.md b/doc/Introduction.md
index 3f24e99..4baa63c 100644
--- a/doc/Introduction.md
+++ b/doc/Introduction.md
@@ -49,7 +49,7 @@
 - Send message
     ```go
     func SendMessagge(){
-        producer := rocketmq.NewProduer(&rocketmq.ProducerConfig{GroupID: "testGroup", NameServer: "localhost:9876"})
+        producer := rocketmq.NewProducer(&rocketmq.ProducerConfig{GroupID: "testGroup", NameServer: "localhost:9876"})
         producer.Start()
         defer producer.Shutdown()
         fmt.Printf("Producer: %s started... \n", producer)
diff --git a/examples/orderproducer/producer.go b/examples/orderproducer/producer.go
index 8e78fb9..7da87a3 100644
--- a/examples/orderproducer/producer.go
+++ b/examples/orderproducer/producer.go
@@ -81,7 +81,7 @@
 		return
 	}
 
-	producer := rocketmq.NewProduer(&rocketmq.ProducerConfig{
+	producer := rocketmq.NewProducer(&rocketmq.ProducerConfig{
 		GroupID:    "testGroup",
 		NameServer: "10.200.20.25:9988",
 	})
diff --git a/examples/producer.go b/examples/producer.go
index a6c801c..98a45b0 100644
--- a/examples/producer.go
+++ b/examples/producer.go
@@ -28,7 +28,7 @@
 }
 
 func SendMessage() {
-	producer := rocketmq.NewProduer(&rocketmq.ProducerConfig{GroupID: "testGroup", NameServer: "localhost:9876"})
+	producer := rocketmq.NewProducer(&rocketmq.ProducerConfig{GroupID: "testGroup", NameServer: "localhost:9876"})
 	producer.Start()
 	defer producer.Shutdown()
 
